Hush 'elif' operation?
Greetings
I'm trying to get as close to a switch statement in hush shell language as possible and thought that a set of if/then/elif/else would be tidier than nested if/then/else. It doesn't work how I expected however. The example below illustrates the problem - I was expecting execution after a true test (in the first 'if' in this case) to continue after the 'fi' but instead it ploughs through all the other executable (echo) statements having skipped the elif statements. It does correctly skip the else clause however :-))
Could someone assist in the navigation of this module to point out where would be a good place to start (i.e. some basic principles and assumptions of how the parser works).
[apologies for the word wrapping]
=>if iml; then echo "one"; elif iml; then echo "two"; elif iml; then echo "three"; else echo "four"; fi
Image at 40340000:
Image Name: Linux-2.4.22-20040129-12:57
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 630253 Bytes = 615.5 kB
Load Address: 00000000
Entry Point: 00000000one
two
three
=>
Many thanks
Signature · 5 lines
Robin Gilks Senior Design Engineer Phone: (+64)(3) 357 1569 Tait Electronics Fax : (+64)(3) 359 4632 PO Box 1645 Christchurch Email : robin.gilks at tait.co.nz New Zealand
Dear Robin,
Quoted 9 lines · in message <[email protected]> you wrote:
I'm trying to get as close to a switch statement in hush shell language as possible and thought that a set of if/then/elif/else would be tidier than nested if/then/else. It doesn't work how I expected however. The example below illustrates the problem - I was expecting execution after a true test (in the first 'if' in this case) to continue after the 'fi' but instead it ploughs through all the other executable (echo) statements having skipped the elif statements. It does correctly skip the else clause however :-))
I confirm that this is a bug of HUSH.
The same problem is present in the HUSH shell of the most recent version of BusyBox, too (v1.00-pre7).
Quoted 3 lines
Could someone assist in the navigation of this module to point out where would be a good place to start (i.e. some basic principles and assumptions of how the parser works).
Well, please feel free to dig into the innards of HUSH (using the BusyBox implementation is probably much easier to debug).
We will look into this, too - as time permits.
Best regards,
Wolfgang Denk
Signature · 3 lines
See us @ Embedded World, Nuremberg, Feb 17 - 19, Hall 12.0 Booth 440 Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de "One planet is all you get."
Dear Robin,
Quoted 4 lines · in message <[email protected]> you wrote:
I'm trying to get as close to a switch statement in hush shell language as possible and thought that a set of if/then/elif/else would be tidier than nested if/then/else. It doesn't work how I expected however. The
...
Quoted 9 lines
=>if iml; then echo "one"; elif iml; then echo "two"; elif iml; then echo "three"; else echo "four"; fi
Image at 40340000:Image Name: Linux-2.4.22-20040129-12:57 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 630253 Bytes = 615.5 kB Load Address: 00000000 Entry Point: 00000000
Quoted 4 lines
one
two
three
=>
I just checked in a patch that fixes this problem. Sorry this took so long.
Best regards,
Wolfgang Denk
Signature · 5 lines
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd at denx.de
Command, n.:
Statement presented by a human and accepted by a computer
in such a manner as to make the human feel as if he is in control.