Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (1) — Plan9 1st Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

rc(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 permission. 

-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 number 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 operators:

­!  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 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 purported 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)

Plan 9  —  April 04, 1995

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026