Page MenuHomeFreeBSD

D57892.diff
No OneTemporary

D57892.diff

diff --git a/bin/test/test.1 b/bin/test/test.1
--- a/bin/test/test.1
+++ b/bin/test/test.1
@@ -33,7 +33,7 @@
.Dt TEST 1
.Os
.Sh NAME
-.Nm test ,
+.Nm test
.Nm \&[
.Nd condition evaluation utility
.Sh SYNOPSIS
@@ -106,7 +106,7 @@
True if
.Ar file
is a named pipe
-.Pq Tn FIFO .
+.Pq FIFO
.It Fl r Ar file
True if
.Ar file
@@ -267,54 +267,25 @@
True if
.Ar expression
is false.
-.It Ar expression1 Fl a Ar expression2
+.El
+.Pp
+The following binary operators are available for use:
+.Bl -tag -width Ar
+.It Ar expression1 && Ar expression2
True if both
.Ar expression1
and
.Ar expression2
are true.
-.It Ar expression1 Fl o Ar expression2
+.It Ar expression1 || Ar expression2
True if either
.Ar expression1
or
.Ar expression2
are true.
-.It Cm \&( Ar expression Cm \&)
-True if expression is true.
.El
+The \fI&&\fP operator and \fI||\fP operator have equal precedence in the shell.
.Pp
-The
-.Fl a
-operator has higher precedence than the
-.Fl o
-operator.
-.Pp
-Some shells may provide a builtin
-.Nm
-command which is similar or identical to this utility.
-Consult the
-.Xr builtin 1
-manual page.
-.Sh GRAMMAR AMBIGUITY
-The
-.Nm
-grammar is inherently ambiguous.
-In order to assure a degree of consistency,
-the cases described in the
-.St -p1003.2 ,
-section D11.2/4.62.4, standard
-are evaluated consistently according to the rules specified in the
-standards document.
-All other cases are subject to the ambiguity in the
-command semantics.
-.Pp
-In particular, only expressions containing
-.Fl a ,
-.Fl o ,
-.Cm \&(
-or
-.Cm \&)
-can be ambiguous.
.Sh EXIT STATUS
The
.Nm
@@ -328,20 +299,59 @@
.It >1
An error occurred.
.El
-.Sh EXAMPLES
+.Sh CAVEATS
+Historically the following operators were also commonly used:
+.Bl -tag -width Ar
+.It Ar expression1 Fl a Ar expression2
+True if both
+.Ar expression1
+and
+.Ar expression2
+are true.
+.It Ar expression1 Fl o Ar expression2
+True if either
+.Ar expression1
+or
+.Ar expression2
+are true.
+.It Cm \&( Ar expression Cm \&)
+True if expression is true.
+.El
+However expressions containing
+.Fl a ,
+.Fl o ,
+.Cm \&(
+or
+.Cm \&)
+can be ambiguous, for example the legacy
+.Fl a
+operator also had higher precedence than the legacy
+.Fl o
+operator.
+.Pp
+Scripts using these legacy forms should be converted to use
+.Cm &&
+and
+.Cm ||
+instead.
+.Pp
Implement
.Li test FILE1 -nt FILE2
-using only
-.Tn POSIX
-functionality:
+using only POSIX functionality:
.Pp
.Dl test -n \&"$(find -L -- FILE1 -prune -newer FILE2 2>/dev/null)\&"
.Pp
-This can be modified using non-standard
-.Xr find 1
-primaries like
-.Cm -newerca
-to compare other timestamps.
+The
+.Nm
+grammar is inherently ambiguous.
+In order to assure a degree of consistency,
+the cases described in the
+.St -p1003.2 ,
+section D11.2/4.62.4, standard
+are evaluated consistently according to the rules specified in the
+standards document.
+All other cases are subject to the ambiguity in the
+command semantics.
.Sh COMPATIBILITY
For compatibility with some other implementations,
the
@@ -349,6 +359,13 @@
primary can be substituted with
.Cm ==
with the same meaning.
+.Pp
+Some shells may provide a builtin
+.Nm
+command which is similar or identical to this utility.
+Consult the
+.Xr builtin 1
+manual page.
.Sh SEE ALSO
.Xr builtin 1 ,
.Xr expr 1 ,
@@ -373,20 +390,20 @@
and
.Fl O
are extensions.
+.Pp
+The
+.Fl a
+and
+.Fl o
+binary primaries and
+.Cm \&(
+and
+.Cm \&)
+operators were marked obsolescent in the 2008 POSIX standards and removed
+in the 2024 POSIX standards, their portability and continued
+long-term support cannot be guaranteed.
.Sh HISTORY
A
.Nm
utility appeared in
.At v7 .
-.Sh BUGS
-Both sides are always evaluated in
-.Fl a
-and
-.Fl o .
-For instance, the writable status of
-.Pa file
-will be tested by the following command even though the former expression
-indicated false, which results in a gratuitous access to the file system:
-.Dl "[ -z abc -a -w file ]"
-To avoid this, write
-.Dl "[ -z abc ] && [ -w file ]"

File Metadata

Mime Type
text/plain
Expires
Mon, Jul 6, 10:00 PM (8 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34430601
Default Alt Text
D57892.diff (3 KB)

Event Timeline