tag 10390 notabug thanks On 12/27/2011 11:12 PM, Mathi.C wrote: > Hi, > > I have come across a scenario where test command resulted wrong result than > expected. > > Please follow the below steps to simulate the scenario. > 1. Define a variable to blank/null > export a= > 2. Test the parameter with test command on file exists > test -f $a
There's your problem. You failed to properly quote things. Per shell
expansion rules, unquoted $a is elided, rather than an empty argument,
which means you passed test exactly one argument ("-f"), and since that
one argument is not empty, it is always true.
If you want to cope with an explicit empty string, you must use quoting:
test -f "$a"
> 3. Echo the result of the last executed command
> echo $?
As this behavior matches POSIX requirements on test, there is nothing to
fix here. Also, be aware that you were probably testing your shell's
built-in test, rather than coreutils' test (running the latter usually
requires that you do things like 'env test' or '/usr/bin/test' to bypass
shell built-ins).
--
Eric Blake [email protected] +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
