[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: shell script



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"



Reply to: