test(1) — Commands
OSF
NAME
test − Evaluates conditional expressions
SYNOPSIS
test expression
[expression ]
DESCRIPTION
The test command evaluates an expression constructed of functions and operators. If the value of expression is true, test returns an exit value of 0 (zero); otherwise, it returns a nonzero (false) exit value. The test command also returns a nonzero exit value if there are no arguments.
The alternate form of the command surrounds expression with [ ] (brackets). When you use this form, you must surround the brackets with spaces.
The test Expressions
All of the listed functions and operators are separate arguments to test.
The following functions are used to construct expression:
-r fileTRUE if file exists and has read permission.
-w fileTRUE if file exists and has write permission.
-x fileTRUE if file exists and has execute permission.
-f fileTRUE if file exists and is a regular file.
-d fileTRUE if file exists and is a directory.
-c fileTRUE if file exists and is a character-special file.
-b fileTRUE if file exists and is a block-special file.
-p fileTRUE if file exists and is a named pipe (FIFO).
-u fileTRUE if file exists and its set-user ID bit is set.
-g fileTRUE if file exists and its set-group ID bit is set.
-k fileTRUE if file exists and its sticky bit is set.
-s fileTRUE if file exists and has a size greater than 0 (zero).
-t [file_descriptor]
TRUE if the open file with file descriptor number file_descriptor (1 by default) is associated with a terminal device.
-z string1
TRUE if the length of string1 is 0 (zero).
-n string1
TRUE if the length of string1 is nonzero.
string1 = string2
TRUE if string1 and string2 are identical.
string1 != string2
TRUE if string1 and string2 are not identical.
string1TRUE if string1 is not the null string.
number1 -eq number2
TRUE if the integers number1 and number2 are algebraically equal. Any of the comparisons -ne, -gt, -ge, -lt, and -le can be used in place of -eq.
The listed functions can be combined with the following operators:
!Unary negation operator.
-aBinary AND operator.
-oBinary OR operator (-a has higher precedence than -o).
\( expression \)
Parentheses for grouping.
Japanese Language Support
If Japanese Language Support is enabled on your system, this command is not available.
EXAMPLES
1.To test whether a file exists and is not empty, enter:
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
If the file specified by the first positional parameter to the shell procedure does not exist, this displays an error message. If $1 exists, it displays nothing. Note that there must be a space between -s and the filename. The double quotes around $1 ensure that the test will work properly even if the value of $1 is the empty string. If the double quotes are omitted and $1 is the empty string, test displays the error message test: parameter expected.
2.To do a complex comparison, enter:
if [ $# -lt 2 -o ! -s "$1" ]
then
exit
fi
If the shell procedure was given fewer than two positional parameters or the file specified by $1 does not exist, then this exits the shell procedure. The special shell variable $# represents the number of positional parameters entered on the command line that started this shell procedure.
EXIT VALUES
The test command evaluates expression and, if its value is TRUE, returns an exit value of 0; otherwise, it returns a nonzero (FALSE) exit value; the test command also returns a nonzero exit value if there are no arguments.