TEST(1) TEST(1)
NAME
test - set status according to condition
SYNOPSIS
test expr
DESCRIPTION
Test evaluates the expression expr. If the value is true the
exit status is null; otherwise the exit status is non-null.
If there are no arguments the exit status is non-null.
The following primitives are used to construct expr.
-r file True if the file exists (is accessible) and is
readable.
-w file True if the file exists and is writable.
-x file True if the file exists and has execute permis-
sion.
-e file True if the file exists.
-f file True if the file exists and is a plain file.
-d file True if the file exists and is a directory.
-s file True if the file exists and has a size greater
than zero.
-t fildes True if the open file whose file descriptor num-
ber is fildes (1 by default) is the same file as
/dev/cons.
s1 = s2 True if the strings s1 and s2 are identical.
s1 != s2 True if the strings s1 and s2 are not identical.
s1 True if s1 is not the null string. (Deprecated.)
-n s1 True if the length of string s1 is non-zero.
-z s1 True if the length of string s1 is zero.
n1 -eq n2 True if the integers n1 and n2 are arithmetically
equal. Any of the comparisons -ne, -gt, -ge,
-lt, or -le may be used in place of -eq. The
(nonstandard) construct -l string, meaning the
length of string, may be used in place of an
integer.
These primaries may be combined with the following opera-
tors:
! unary negation operator
-o binary or operator
-a binary and operator; higher precedence than -o
( expr ) parentheses for grouping.
The primitives -b, -u, -g, and -s return false; they are
recognized for compatibility with POSIX.
Notice that all the operators and flags are separate
Page 1 Plan 9 (printed 11/3/25)
TEST(1) TEST(1)
arguments to test. Notice also that parentheses and equal
signs are meaningful to rc and must be enclosed in quotes.
EXAMPLES
Test is a dubious way to check for specific character
strings: it uses a process to do what an rc(1) match or
switch statement can do. The first example is not only
inefficient but wrong, because test understands the pur-
ported string "-c" as an option.
if (test $1 '=' "-c") echo OK # wrong!
A better way is
if (~ $1 -c) echo OK
Test whether `abc' is in the current directory.
test -f abc -o -d abc
SOURCE
/sys/src/cmd/test.c
SEE ALSO
rc(1)
Page 2 Plan 9 (printed 11/3/25)