tag 24894 notabug thanks On 11/07/2016 06:58 AM, BAECKEROOT Alain wrote: > Dear gnu-coreutils team > > We had a funny problem caused by `test` which does return "0" when an option is given without any EXPRESSION > > The man page says (near line 15 or so) : > An omitted EXPRESSION defaults to false. You are correct that it states that, but it means that 'test' (with no expression at all) is what results in a false return (that is, an omitted expression is equivalent to zero arguments). 'test -s' is NOT a case of an omitted expression; your expression was '-s'. Since you provided exactly one argument, you are testing whether '-s' is the empty string (it is not, hence the true result). The full POSIX rules are here: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html > I expected an error (at least return code not zero) , or it would be nice to be warned in the man page. You are correct that the man page could probably do a bit better at explaining that test's behavior is STRONGLY influenced by the number of parameters present (and this is per POSIX rules, so it is not just coreutils' test implementation, but ALL conforming implementations that will behave the same way). > ------------- > reference : On *AIX* 6.1 , with IBM's test , there is an error > > wasoi@cms054:/i/w/l/w00/was> echo $SHELL > /bin/ksh > wasoi@cms054:/i/w/l/w00/was> uname > AIX > wasoi@cms054:/i/w/l/w00/was> test -s > ksh: test: argument expected That is a bug in AIX's ksh, which is not POSIX compliant. > wasoi@cms054:/i/w/l/w00/was> echo $? > 1 > > This was the expected behavior :-) Sorry, but that behavior is contrary to POSIX. > Ce message électronique, les éventuels fichiers joints et les informations qu'il contient, Legalese like this is unenforceable on public mailing lists; you may wish to use a personal email account rather than spamming us with your employer's garbage disclaimer. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org