Re: shell scripting
* Cuenta la leyenda que Emilio J. Padrón (emilioj@mail2.udc.es) escribió:
> On Wed, Nov 27, 2002 at 12:53:57PM +0100, Victor Calzado Mayo wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Hola
> > On Wednesday 27 November 2002 12:14, Emilio J. Padrón wrote:
> > > Hola lista,
> > >
> > > ¿cómo puede hacer para que una variable de entorno que hereda una
> > > subshell se pueda modificar en esa subshell y el valor modificado quede
> > > actualizado en la shell padre?
> >
> > Si se trata de pasar cosas entre una subshell y su shell madre no puedes
> > utilizar variables de entorno, aunque no te lo podría jurar, si necesitas que
> > un script herede las variables modificadas por otro puedes evitar usar el
> > fork de la subshell ejecuntando el script2 con .
> >
> > ....
> >
>
>
> Gracias a todos por las respuestas.
>
> El problema básico me lo estoy encontrando al enlazar dos comandos con
> una tubería dentro de un scripts:
>
> grep -h "${ETIQUETA}" ${1:-*} | while read KK0 KK1 T
>
> en el while lo que hago es buscar los valores máximo y mínimo en una
> lista de valores (resultado del grep). El caso es que no consigo que una
> vez ejecutado el while los valores de las variables MAX y MIN
> permanezcan (los comandos enlazados por una tubería se ejecutan cada
> uno en una subshell, según tengo entendido). Es decir, algo como:
>
> ----------------
> export MAX=0
>
> grep -h "${ETIQUETA}" ${1:-*} | while read KK0 KK1 T
> do
>
> if [ $MAX ]
> then
> if [ `echo "$T<$MAX" | bc` = 1 ]
> then
> continue
> fi
> fi
> MAX=$T
> done
>
> echo $MAX
> -----------
> y que funcione, claro :-)
>
> como me habéis dado varios consejos interesantes a ver si busco una
> solución/alternativa.
>
Alternativa awk:
grep -h "${ETIQUETA}" ${1:-*} | awk '
BEGIN{ max="nada" }
{ if ( (max == "nada") || ( max < $3 ) ) max = $3; }
END{print max}'
pudiendo hacer:
maximo=`grep -h "${ETIQUETA}" ${1:-*} | awk 'BEGIN{ max="nada" }{ if ( (max == "nada") || ( max < $3 ) ) max = $3; }END{print max}'`
echo el mas grandote es: $maximo
Espero te sirva...
--
Saludos,
Germán
Reply to: