Description of problem: According to the man page, "test -n STRING" returns true (0) if the STRING's length is non-zero and that it equivalent to "test STRING" (and contrary to "test -z STRING"). Version-Release number of selected component (if applicable): coreutils-8.15-7.fc17.x86_64 How reproducible: Always Steps to Reproduce: 1. VAR='' 2. test -n $VAR ; echo $? 3. test $VAR ; echo $? Actual results: In step 2, the output is 0 (true in shell semantics). Expected results: In step 2, the output is 0 (false in shell semantics). Additional info: "test -n $VAR" returns 0 on both empty and non-empty string $VAR value. "test $VAR" and "test -z $VAR" give the expected values, ie. 0,1 on non-empty and 1,0 on empty $VAR values. Also, "test -n" gives correct output if a direct value is given.
Expected results: In step 2, the output is 1 (false in shell semantics). Sorry for the typo..
(In reply to comment #0) > 2. test -n $VAR ; echo $? You need to write: test -n "$VAR" ... so that "test" actually gets an empty string. Otherwise shell will throw the empty string away. Additionally, you are probably using the shell built-in command "test", not the executable /usr/bin/test from coreutils: http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#I-am-having-a-problem-with-kill-nice-pwd-sleep-or-test_002e