[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