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 eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org