TEST(1)

NAME
test - condition command

SYNOPSIS
test expr

DESCRIPTION
Test evaluates the expression expr, and, if its value is true, returns zero exit status; otherwise, it returns a nonzero exit status. Test returns a nonzero 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.

-x file
    true if the file exists and is executable.

-f file
    true if the file exists and is not a directory.

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

-s file
    true if the file exists and is 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. This will only work if no other primitives are used in expr.

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 to the shell and must be escaped.

The left bracket ( [ ) is a shell alias for test. This lets you create shell scripts using the following construct:

if [ <conditional expr> ] ; then ...

SEE ALSO
sh(1), find(1)