The test(1) utility evaluates the expression and, if it
evaluates to true, returns a zero (true) exit status; otherwise it
returns 1 (false). If there is no expression, test also returns 1
(false).
All operators and flags are separate arguments to the
test(1) utility.
The following primaries are used to construct expression:
-bfile
True if file exists and is a block special file.
-cfile
True if file exists and is a character special
file.
-dfile
True if file exists and is a directory.
-efile
True if file exists (regardless of type).
-ffile
True if file exists and is a regular file.
-gfile
True if file exists and its set group identifier (ID)
flag is set.
-nstring
True if the length of string is nonzero.
-pfile
True if file is a named pipe (first-in/first-out
[FIFO]).
-rfile
True if file exists and is readable.
-sfile
True if file exists and has a size greater than
zero.
-tfile_descriptor
True if the file whose file descriptor number is
file_descriptor (default 1) is open and is associated with a
terminal.
-ufile
True if file exists and its set user ID flag is
set.
-wfile
True if file exists and is writable. True indicates only
that the write flag is on. The file is not writable on a read-only
file system even if this test indicates true.
-xfile
True if file exists and is executable. True indicates
only that the execute flag is on. If file is a directory,
true indicates that file can be searched.
-zstring
True if the length of string is zero.
string
True if string is not the null string.
s1=s2
True if the strings s1 and s2 are identical.
s1!=s2
True if the strings s1 and s2 are not
identical.
n1-eqn2
True if the integers n1 and n2 are algebraically
equal.
n1-nen2
True if the integers n1 and n2 are not
algebraically equal.
n1-gtn2
True if the integer n1 is algebraically greater than the
integer n2.
n1-gen2
True if the integer n1 is algebraically greater than or
equal to the integer n2.
n1-ltn2
True if the integer n1 is algebraically less than the
integer n2.
n1-len2
True if the integer n1 is algebraically less than or
equal to the integer n2.
These primaries can be combined with the following
operators:
!expression
True if expression is false.
expression1-aexpression2
True if both expression1 and expression2 are
true.
expression1-oexpression2
True if either expression1 or expression2 are
true.
(expression)
True if expression is true.
The -a operator has higher precedence than the -o
operator.