Jakub Lucký wrote:
> Hi, I am using test in my maildrop filters and I was furious about this
> 
> ja...@gondolin:~$ /usr/bin/test -f/some/nonexistent/file || echo "returned 
> false"
> ja...@gondolin:~$ /usr/bin/test -f /some/nonexistent/file || echo "returned 
> false"
> returned false

I am sorry that you were furious about it but that is expected behavior.

> I hope given example is self-explaining
> 
> I think there are two methods to solve this:
> 1) test -f/filename returns bad option and dies
> 2) test -f/filename will be accepted and solved correctly
> 
> Same bug reproducible on both stable (6.10-6)  and unstable...

The problem is that you joined the "/some/nonistent/file" argument up
against the -f option.  In most programs that would cause you to have
an error because all of the following characters would be seen as
options and would almost certainly generate option processing errors.
But 'test' is special.  Test must remain compatible with traditional
usage.  This has been standardized by POSIX and 'test' is required to
behave as it does.  This is documented in the 'test' manual page.

  $ info coreutils 'test invocation'

     If EXPRESSION is omitted, `test' returns false.  If EXPRESSION is a
  single argument, `test' returns false if the argument is null and true
  otherwise.  The argument can be any string, including strings like
  `-d', `-1', `--', `--help', and `--version' that most other programs
  would treat as options.  To get help and version information, invoke
  the commands `[ --help' and `[ --version', without the usual closing
  brackets.

'test' is special and counts the number of arguments to it.  Since you
have exactly one argument "-f/some/nonexistent/file" then it returns
true with an exit code of 0.  This is not a bug.  This is required and
documented behavior.  The standards page docmenting the requirements
is here:

  http://www.opengroup.org/onlinepubs/009695399/utilities/test.html

Bob



--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to