GNU bug report logs -
#69939
test utility bug: "test -a -a -a" and "test -o -o -o" fail
Previous Next
To reply to this bug, email your comments to 69939 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-coreutils <at> gnu.org
:
bug#69939
; Package
coreutils
.
(Fri, 22 Mar 2024 12:11:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Vincent Lefevre <vincent <at> vinc17.net>
:
New bug report received and forwarded. Copy sent to
bug-coreutils <at> gnu.org
.
(Fri, 22 Mar 2024 12:11:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
With GNU Coreutils 9.4, both "test -a -a -a" and "test -o -o -o" fail:
$ export POSIXLY_CORRECT=1
$ /usr/bin/test -a -a -a ; echo $?
/usr/bin/test: ‘-a’: unary operator expected
2
$ /usr/bin/test -o -o -o ; echo $?
/usr/bin/test: ‘-o’: unary operator expected
2
According to POSIX, they should return 0.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
says for 3 arguments:
If $2 is a binary primary, perform the binary test of $1 and $3.
Here, $2 is -a and -o respectively, which are binary primaries.
And both $1 and $3 are non-null strings.
--
Vincent Lefèvre <vincent <at> vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Information forwarded
to
bug-coreutils <at> gnu.org
:
bug#69939
; Package
coreutils
.
(Fri, 22 Mar 2024 17:11:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 69939 <at> debbugs.gnu.org (full text, mbox):
On 22/03/2024 11:20, Vincent Lefevre wrote:
> With GNU Coreutils 9.4, both "test -a -a -a" and "test -o -o -o" fail:
>
> $ export POSIXLY_CORRECT=1
> $ /usr/bin/test -a -a -a ; echo $?
> /usr/bin/test: ‘-a’: unary operator expected
> 2
> $ /usr/bin/test -o -o -o ; echo $?
> /usr/bin/test: ‘-o’: unary operator expected
> 2
>
> According to POSIX, they should return 0.
>
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
> says for 3 arguments:
>
> If $2 is a binary primary, perform the binary test of $1 and $3.
>
> Here, $2 is -a and -o respectively, which are binary primaries.
> And both $1 and $3 are non-null strings.
Agreed. Any leading '-' triggers this:
$ env test -. -a -.
test: ‘-.’: unary operator expected
Note we already advise (as does POSIX) to avoid '-a' and '-o':
https://debbugs.gnu.org/22909
BTW POSIX advises to use parenthesis to avoid some parsing ambiguities,
and it helps in this case too:
$ env test \( -a \) -a \( -a \); echo $?
0
Though I see bash 5.2.26 has issue with it :/
$ test \( -a \) -a \( -a \)
bash: test: `)' expected
bash doesn't like the -a in particular, and is ok with other strings:
$ test \( -. \) -a \( -. \); echo $?
0
cheers,
Pádraig
Information forwarded
to
bug-coreutils <at> gnu.org
:
bug#69939
; Package
coreutils
.
(Fri, 22 Mar 2024 17:41:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 69939 <at> debbugs.gnu.org (full text, mbox):
On Mär 22 2024, Pádraig Brady wrote:
> Though I see bash 5.2.26 has issue with it :/
>
> $ test \( -a \) -a \( -a \)
> bash: test: `)' expected
>
> bash doesn't like the -a in particular, and is ok with other strings:
That's because in bash -a is ambiguous:
-a FILE True if file exists.
--
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
This bug report was last modified 279 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.