[colug-432] Shell Tests
Stephen Potter
spp at unixsa.net
Wed Oct 7 08:21:19 EDT 2015
On 10/6/2015 6:21 PM, Rob Stampfli wrote:
> On Tue, Oct 06, 2015 at 05:21:56PM -0400, jep200404 at columbus.rr.com wrote:
>> I saw a shell test like [ "z${1}" = "z" ],
>> which got me wondering, why bother with the 'z'?
>> Is there some subtle behavior, perhaps when there
>> is no "${1}" argument? So I experimented.
> It used to be that the "test" command got confused when the first
> argument started with a dash, so shell programmers routinely
> prepended an alpha to cover this case.
Not only just the dash, but sh (and ksh, I seem to remember) could not
distinguish between a null and nothing, so even when there was a value
to $1, the test '[ "$var" = "" ]' would return a syntax error because
there was no second argument to the test.
When I go into work in a little while, I'll test this on AIX - the only
"traditional" commercial Unix I currently have access to - and see if
that is still the case.
As to the original question (assuming I'd even write in shell
anymore....), it is one of those "it depends" answers. If I have any
thought that the script will be used across multiple OSes (not just
Linux, but Solaris, AIX, HPUX), I would use the traditional "x$1",
because it is more portable and more likely to work. If I know it will
only ever be used on Linux, then I would be fine with a bash specific style.
-spp
More information about the colug-432
mailing list