Mat�as Costa escribi�:

> Hola, he hecho un peque�o script, pero tiene un comportamiento
> inesperado.  Debe leer un archivo con una linea con algo como esto
> (el formato no lo pongo yo):
>
> hola=adios nada algo=tal vmode=xx 34 com=cual
>
> debe coger el valor de vmode para hacer algo despues, el script para
> reconocerlo es el siguiente
>
> ---------------------------------------------------------------------------
> #/bin/bash
>
> VMODE="yy"
> tr " " "\n" < conf | while read param; do
>       echo "-${param}- VMODE=$VMODE"
>       case "$param" in
>               vmode*)
>                       VMODE=`echo $param | cut -c 7-`
>                       export VMODE
>                       echo "Ahora VMODE=$VMODE"
>               ;;
>       esac
> done
> echo "-> $VMODE"
> ---------------------------------------------------------------------------

Muy interesante. Aqu� tienes una versi�n simplificada:

#/bin/sh
A="yy"
seq 1 10 | while read param; do
  A=otracosa
done
echo "$A"

Por lo que parece, lo que pongas en el "do" se ejecuta en un subshell,
con lo cual no puedes transmitir cambios de variables desde dentro
del bucle hasta fuera.

Prueba a escribirlo de otra manera, por ejemplo, as�:

#!/bin/sh
VMODE="yy"
VMODE=`tr " " "\n" < conf | grep ^vmode= | cut -c 7-`
echo "$VMODE"

Responder a