test − condition evaluation utility
test expression
[ expression ]
The test utility evaluates the expression and, if it evaluates to true, returns a zero (true) exit status; otherwise it returns 1 (false). If no expression is given, test also returns 1 (false).
All operators and flags are separate arguments to the test utility.
The following primaries are used to construct expression:
|
−b file |
True if file exists and is a block special file. |
|||
|
−c file |
True if file exists and is a character special file. |
|||
|
−d file |
True if file exists and is a directory. |
|||
|
−e file |
True if file exists (regardless of type). |
|||
|
−f file |
True if file exists and is a regular file. |
|||
|
−g file |
True if file exists and its set−group−ID flag is set. |
|||
|
−h file |
True if file exists and is a symbolic link. This operator is for COMPATABILITY purposes, do not rely on its existence. Use −L instead. |
|||
|
−k file |
True if file exists and its sticky bit is set. |
|||
|
−n string |
True if the length of string is nonzero. |
|||
|
−p file |
True if file is a named pipe (FIFO). |
|||
|
−r file |
True if file exists and is readable by the effective user/group. |
|||
|
−s file |
True if file exists and has a size greater than zero. |
−t file_descriptor
True if the file whose file descriptor number is file_descriptor is open and is associated with a terminal.
|
−t |
Same as above with an implicit file descriptor number of "1" (e.g.: −t 1). | ||
|
−u file |
True if file exists and its set−user−ID flag is set. | ||
|
−w file |
True if file exists and is writable by the effective user/group. 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. | ||
|
−x file |
True if file exists and is executable by the effective user/group. True indicates only that the execute flag is on. If file is a directory, true indicates that file can be searched. | ||
|
−z string |
True if the length of string is zero. | ||
|
−B file |
True if file exists and is a binary file. | ||
|
−L file |
True if file exists and is a symbolic link. | ||
|
−O file |
True if file exists and its owner matches the effective user ID of this process. | ||
|
−R file |
True if file exists and is readable by the real user/group. | ||
|
−S file |
True if file exists and is a socket. | ||
|
−T file |
True if file exists and is a text file. | ||
|
−W file |
True if file exists and is writable by the real user/group. 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. | ||
|
−X file |
True if file exists and is executable by the real user/group. True indicates only that the execute flag is on. If file is a directory, true indicates that file can be searched. |
file1 −nt file2
True if file1 exists and is newer than file2.
file1 −ot file2
True if file1 exists and is older than file2.
|
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. | ||
|
s1 < s2 |
True if string s1 comes before s2 based on the ASCII value of their characters. | ||
|
s1 > s2 |
True if string s1 comes after s2 based on the ASCII value of their characters. | ||
|
s1 |
True if s1 is not the null string. | ||
|
n1 −eq n2 |
True if the integers n1 and n2 are algebraically equal. | ||
|
n1 −ne n2 |
True if the integers n1 and n2 are not algebraically equal. | ||
|
n1 −gt n2 |
True if the integer n1 is algebraically greater than the integer n2. | ||
|
n1 −ge n2 |
True if the integer n1 is algebraically greater than or equal to the integer n2. | ||
|
n1 −lt n2 |
True if the integer n1 is algebraically less than the integer n2. | ||
|
n1 −le n2 |
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 −a expression2
True if both expression1 and expression2 are true.
expression1 −o expression2
True if either expression1 or expression2 are true.
|
(expression) |
True if expression is true (uses parentheses for grouping). |
Note that the −a operator has higher precedence than the −o operator. Notice also that all the operators and flags are separate arguments to test.
The test utility
exits with one of the following values:
$return_val == 0
Expression evaluated to true.
$return_val == 1
Expression evaluated to false or expression was missing.
$return_val > 1
An error occurred.
Command line arguments like parentheses and arithmetic operators (e.g.: '(', ')', '!', '>', '<', etc.) may be meaningful to the command−line interpreter (shell) and therefore may need to be escaped from any special shell interpretation.
sh, find