[eside-ghost] Bash - Filtrando salida de proceso mientras se guarda en variable

Bruno Gonzalez stenyak en gmail.com
Mie Ago 1 12:57:55 CEST 2012


Si, al pipear while, bash lo pone automaticamente en una subshell, y
"pierde" los valores locales al salir.

Mira a ver si jugando con exec puedes apañártelas para no necesitar un
pipe en el while.
Pero lo más sencillo igual es pasarlo a ksh, que se comporta de forma
más sana, sin subshells ni historias.
O bien tirar del archivo intermediario (si no puedes depender de que
ksh esté instalado en los equipos).

2012/8/1 Jon Valdés <juanval en gmail.com>:
> 2012/8/1 Pablo Garaizar Sagarminaga <garaizar en deusto.es>:
>> Aupa,
>>
>> El Wed, 1 Aug 2012 12:04:09 +0200
>> Bruno Gonzalez <stenyak en gmail.com> comentaba:
>>
>>> Uhmm... por si no es muy obvio, se me ha olvidao decir que ese script
>>> toma como input a stdout. Es decir lo guardas como "filter.sh", y
>>> luego lo usas tal que:
>>> $ comando.sh | ./filter.sh > /tmp/passthrough_del_stdout.txt
>>
>> Si Jon lo quiere dentro de su script, siempre puede cambiar el
>>
>> while read line
>>
>> por:
>>
>> comando | while read line
>>
>> y dejar el resto igual. Creo que debería funcionar :-)
>
> Lo he estado intentando, y no lo consigo.
> Sospecho que el "while" crea un entorno distinto que no comparte las
> variables con el script original, porque esto no tira:
>
> output=""
> find . | while read line
> do
>     printf "$line\n"
>     output="$output\n$line"
> done
>
> echo "********************"
> printf "$output\n"
>
> He probado a ponerle un export al output dentro del while, y tampoco.
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost



-- 
Saludos,
     Bruno González

_______________________________________________
Jabber: stenyak AT gmail.com
http://www.stenyak.com


Más información sobre la lista de distribución eside-ghost