04/27/2013 03:49 PM, Cameron Simpson wrote:
On 26Apr2013 09:12, Patrick O'Callaghan pocallaghan@gmail.com wrote: | On Fri, 2013-04-26 at 15:36 +0300, Cristian Sava wrote: | > Webalizer is enabled via /etc/sysconfig/webalizer but I don't understand | > why /etc/cron.daily/00webalizer has this line: | > | > [ "z$WEBALIZER_CRON" != "zyes" ] && exit 0 | > | > that I think it should be (and it is working this way) | > | > [ "$WEBALIZER_CRON" != "yes" ] && exit 0 | > | > What is the mistery? | | The "z$Foo" != "zbar" style is idiomatic in Shell scripts. I think it's | to ensure portability between Shells with slightly different expression | rules.
In particular it avoids issues where $WEBALIZER_CRON looks like a test operator such as "-z" or something unfortunate.
Also there may be situations where $SOME_VAR evaluates to null. Then a test looks like [ != "something" ] which is guaranteed to break. By (pre|post)fixing each side with an arbitrary character such as Z that same scenario would yield [ "Z" != "Zsomething" ] and would survive shell parsing.