On Sunday 07 August 2011, Jonathan Nieder wrote: > Am I the only one who finds this > > test "z$foo" = "zbar" > > style to be impossibly ugly? It means every time someone considers > using the "test" utility, they decide "is this expression likely to > looks like an operator" and each time someone reads a use of the > "test" utility, there is a lingering question of whether that choice > was made correctly. By contrast, if one follows the following simple > rules, everything works fine with the shells git supports: > > - _Do_ use the "z$foo" trick when using expr. > - Do not use test's '(', '),' -a and -o operators; use && and || > instead. > > The Autoconf manual says > > Posix also says that ‘test ! "string"’, ‘test -n "string"’ and > ‘test -z "string"’ work with any string, but many shells (such > as Solaris, AIX 3.2, UNICOS 10.0.0.6, Digital Unix 4, etc.) > get confused if string looks like an operator: > > Notice that none of the mentioned shells is close enough to POSIX even > to support $( / ). This is an area in which early POSIX work improved > shells immensely (the "-e" primary was introduced around the same > time). > While this is true, some problems with the `test' builtin persists also with in more "posixy" shells. For example, with Solaris /bin/ksh and /usr/xpg4/bin/sh (the latter expected to be the default POSIX-compliant shell on the system, since as you've noticed /bin/sh is defintely not compliant there), one sees: $ /usr/xpg4/bin/sh -c 'test -z ")"'; echo $? 0 $ /bin/ksh -c 'test -z ")"'; echo $? 0 This will be documented in the next version of the Autoconf manual BTW. Regards, Stefano -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html