Ash eval wierdness

Nigel Hathaway Nigel.Hathaway at ubiquisys.com
Wed May 25 14:56:35 UTC 2011


Do you know what the solution is?

I've tried the 'set' command, but this doesn't seem to behave according standard ash set (according to the 'set' manpage)

On 05/25/2011 10:24 AM, Nigel Hathaway wrote:
> I'm trying to import a set of variables from a file containing assignments of the form "a=b", one on each line. I am finding that the variable assignments are being lost.
> 
> Here is a simplified version of my script which illustrates the problem:
> 
> echo "myvar=my value" | while read opt; do 
>     if echo "$opt" | grep -q '='; then
>         var=`echo "$opt" | /bin/sed "s/=.*//"`
>         val=`echo "$opt" | /bin/sed "s/[^=]*=//"`
>         eval $var=\'$val\'
>         echo "(1)" $var=\'$val\'
>         echo "(2) myvar=$myvar"
>     fi
> done
> echo "(3) myvar=$myvar"
> 
> Which yields this:
> 
> (1) myvar='my value'
> (2) myvar=my value
> (3) myvar=
> 
> I am using Busybox v1.18.4
> 
> Any idea what is going on?

Hi Nigel,

You will get the same results if you run that logic through bash.
The problem is that your eval logic only has effect until the loop
(everything after the pipe '|') ends.

Run it in bash and you will see the same thing.

Chuck
_______________________________________________
busybox mailing list
busybox at busybox.net
http://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list