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 3/29/24)

     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 3/29/24)