[ubuntu-ar] echo en bash

Marcelo Fernandez marcelo.fidel.fernandez at gmail.com
Sat Apr 30 17:09:05 UTC 2011


El día 30 de abril de 2011 13:32, Hugo M <ham1988 en gmail.com> escribió:
> Perdón, tenés razón en lo que decís, pero me expresé mal, mi problema viene
> cuando tengo varias funciones una adentro de otra. La de mas "adentro" es
> interactiva, pero fijate en este ejemplo, el usuario nunca va a leer
> "ingrese un número", sino que lo va a leer al final, apendeado al output de
> bla2 (y de hecho bla2 no va a funcionar bien, porque recibe un input
> erróneo).
>
>
> #!/bin/bash
> function bla_interactiva() {
>  echo -n "Ingrese un número:";
>  numero=0;
>  read numero;
>  echo $numero;
> }
> function bla2() {
>    content=$(bla_interactiva)
>     #proceso de la variable content
>     echo $processed_content
> }
> bla2
>
> Mi problema no es de sintáxis sino conceptual, hay alguna forma de redirigir
> directamente a la terminal? Si no la hay, qué se hace en estos casos?
> Repetir código es algo que no me gusta y la función interactiva tiene 15-20
> líneas y se usa en varios lugares. Si bien no es tan grave, me gustaría
> saber si hay una forma "correcta" de hacer esto.

Entiendo, no sé bien en detalle porqué te pasa, pero con una variable
global funciona:

#!/bin/bash
numero=
function bla_interactiva() {
 echo -n "Ingrese un número:";
 read numero;
}
function bla2() {
    bla_interactiva;
    echo $numero
}
bla2

Recordá que el () abre un subshell y no te comparte nada con el shell padre.

Leete esto: http://tldp.org/LDP/abs/html/subshells.html#PARVIS

Saludos
-- 
Marcelo F. Fernández
Buenos Aires, Argentina
Licenciado en Sistemas - CCNA

E-Mail: marcelo.fidel.fernandez en gmail.com
Blog: http://blog.marcelofernandez.info
Twitter: http://twitter.com/fidelfernandez



More information about the Ubuntu-ar mailing list