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.) -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. Notice that all the operators and flags are separate argu- ments to test. Notice also that parentheses and equal signs are meaningful to rc and must be enclosed in quotes. EXAMPLES Page 1 Plan 9 (printed 12/21/24) TEST(1) TEST(1) 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 SEE ALSO rc(1) Page 2 Plan 9 (printed 12/21/24)