From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Neubacher Date: Sun, 23 Nov 2014 17:56:26 +0100 Subject: [U-Boot] set and test a local variable in a script In-Reply-To: <20141122225604.54F9838015E@gemini.denx.de> References: <5470D48C.1080103@gmx.at> <20141122225604.54F9838015E@gemini.denx.de> Message-ID: <547211BA.7080603@gmx.at> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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@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 >