TEST(1)

NAME
test - condition command

SYNOPSIS
test [expr]

DESCRIPTION
test evaluates the expression expr, and if its value is true then returns zero exit status; otherwise, a non zero exit status is returned. test returns a non zero exit if there are no arguments.

The following primitives are used to construct expr:

-r file
    true if the file exists and is readable.

-w file
    true if the file exists and is writable.

-u file
    true if the file exists and has the setuid bit set.

-g file
    true if the file exists and has the setgid bit set.

-k file
    true if the file exists and has the sticky bit set.

-f file
    true if the file exists and is a regular file.

-d file
    true if the file exists and is a directory.

-h file
    true if the file exists and is a symbolic link.

-L file
    true if the file exists and is a symbolic link.

-p file
    true if the file exists and is a named pipe.

-b file
    true if the file exists and is a block device.

-c file
    true if the file exists and is a character device.

-S file
    true if the file exists and is a socket (/usr/local/heirloom/usr/5bin/posix/test and /usr/local/heirloom/usr/5bin/posix2001/test only).

-e file
    true if the file exists (/usr/local/heirloom/usr/5bin/posix/test and /usr/local/heirloom/usr/5bin/posix2001/test only).

-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 associated with a terminal device.

-z s1
    true if the length of string s1 is zero.

-n s1
    true if the length of the string s1 is nonzero.

s1 = s2
    true if the strings s1 and s2 are equal.

s1 != s2
    true if the strings s1 and s2 are not equal.

s1  true if s1 is not the null string.

n1 -eq n2
    true if the integers n1 and n2 are algebraically equal. Any of the comparisons -ne, -gt, -ge, -lt, or -le may be used in place of -eq.

These primaries may be combined with the following operators:

!   unary negation operator

-a  binary and operator

-o  binary or operator

( expr )
    parentheses for grouping.

-a has higher precedence than -o. Notice that all the operators and flags are separate arguments to test. Notice also that parentheses are meaningful as command separators and must be escaped.