On Fri, 2013-04-26 at 16:42 +0300, Cristian Sava wrote:
On Fri, 2013-04-26 at 08:30 -0500, Chris Adams wrote:
> Once upon a time, Jonathan Kamens <jik(a)kamens.us> said:
> > This, however, is fine:
> >
> > [ "$WEBALIZER_CRON" != yes ]
> >
> > because the quotes ensure that the statement will be evaluated with an
> > expression to the left of the != even if the expression is just an empty
> > string.
> >
> > This is fine too:
> >
> > [ z$WEBALIZER_CRON != zyes ]
> >
> > because if the variable is empty, the expression to the left will be
"z"
> > rather than an empty string.
>
> The reason some use a combination of quotes and a leading character is
> for testing user-provided input. It shouldn't matter in this case, but
> it is just a little bit more defensive programming.
>
> The problem if you are testing a user-provided variable is that they
> could give input that starts with a dash, a close bracket, etc., and
> that would screw up the test. Putting a character at the start protects
> against that.
>
> Also, always quoting the variable is good programming practice; it could
> have whitespace in it, in which case the non-quoted version would expand
> to multiple tokens (and again break).
>
> So, still today, the best defensive way is:
>
> [ "z$WEBALIZER_CRON" != zyes ]
>
> --
> Chris Adams <cmadams(a)hiwaay.net>
> Systems and Network Administrator - HiWAAY Internet Services
> I don't speak for anybody but myself - that's enough trouble.
Good to know. Thank you very much,
I think we *all* learned something here today :)
(actually I finally figured out the reason for this independently, just
last month or so. Only took me thirteen years of Linux use...)
--
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
http://www.happyassassin.net