On Tue, Mar 01, 2011 at 04:20:25PM +0200, Baruch Siach wrote: > Hi Marc, > > On Tue, Mar 01, 2011 at 03:11:31PM +0100, Marc Kleine-Budde wrote: > > On 03/01/2011 03:06 PM, Vanalme Filip wrote: > > [...] > > > > > One more question about barebox scripts (I guess even scripts in > > > general...). This is part of a script from another board (that I took > > > over for my own board): > > > > > #!/bin/sh > > > > > > . /env/config > > > > > > If [ x$1 = xflash ]; then > > > root=flash > > > kernel=flash > > > fi > > > > > > if [ x$1 = xnet ]; then > > > root=net > > > kernel=net > > > fi > > > > > > why the scripts are using i.e. [ x$1 = xflash ] instead of just simply [ $1 = flash ] ? Both are doing the same, no ? > > > > The shell is quite old and doesn't support that. But you're right for > > modern shells like bash or dash. > > I get this under bash: > > $ [ $UNDEF = test ] > bash: [: =: unary operator expected > > However '[ "$UNDEF" = test ]' behaves as expected under bash (but not under > hush, which is the shell of Barebox). I didn't test it, but even if a variable is defined, I guess this might result in trouble: arg=-n [ $arg = flash ] (At least I remember this being the reason for using "x$arg" back when I worked on Solaris.) And note without quoting quite interesting things can happen, e.g.: test -n $arg returns false if arg="= 42". Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox