[U-Boot] set and test a local variable in a script

Andreas Neubacher a_neubi at gmx.at
Sun Nov 23 17:56:26 CET 2014


hi,

many, many, many thx for your quick response ... now it works, and i 
know why it hasn't  :)

br,
Andy


On 22.11.2014 23:56, Wolfgang Denk wrote:
> Dear Andreas,
>
> In message <5470D48C.1080103 at gmx.at> you wrote:
>> i'm trying to set a local variable and test the variable in an
>> if-then-else script ...
>> but it's somehow a bit weird!?
> Not really weird; you just have to be a bit careful about quoting
> rules...
>
>> - set variable "nea" to 0
>> - create a script "x" and run .... OK
>> - modify variable "nea" to 1
>> - run script "x" again ... NOK?!
>>
>> ... what i'm doing wrong  -  the behavior is the same with 2013.10 and
>> 2014.01
> ...and it would be the same if you were testing with a regular shell on
> the Linux command line.
>
> Actually this is something I always recommend: if you see some strange
> behaviour, first try to do the same in a standard shell environment,
> and debug it there.
>
>
>>   >U-Boot# nea=0
>>   >U-Boot# setenv x "if itest 1 -eq $nea; then echo var1; else echo var0;
>> fi;"
> It would have been a good idea here todo a "printenv x" to check what
> was actually stored in the variable - this would have shown your
> problem.  The thing is, you want to keep the '$nea' notation in the
> variable, so you can evaluate the variable when you run that macro.
> However, inside double quotes (") variable substitution takes place,
> so above command is equivalent to
>
>      setenv x "if itest 1 -eq 0; then echo var1; else echo var0; fi;"
>
>>   >U-Boot# run x
>>   >var0
>>   >U-Boot# nea=1
>>   >U-Boot# run x
>>   >var0            <<<<<----- so now i should get the "var1" as a result
>>   >U-Boot# echo $nea
>>   >1
>   
> Use printenv to verify what is stored in the variable x, and you will
> understand this.
>
>
> Best regards,
>
> Wolfgang Denk
>



More information about the U-Boot mailing list