-->
Previous Table of Contents Next


The test Command

In bash and pdksh, a command called test is used to evaluate conditional expressions. You would typically use the test command to evaluate a condition that is used in a conditional statement or to evaluate the entrance or exit criteria for an iteration statement. The test command has the following syntax:


test expression

or


[ expression ]

Several built-in operators can be used with the test command. These operators can be classified into four groups: integer operators, string operators, file operators, and logical operators.

The shell integer operators perform similar functions to the string operators except that they act on integer arguments. Table 14.2 lists the test command’s integer operators.

Table 14.2. The test command’s integer operators.

Operator Meaning

int1 -eq int2 Returns True if int1 is equal to int2.
int1 -ge int2 Returns True if int1 is greater than or equal to int2.
int1 -gt int2 Returns True if int1 is greater than int2.
int1 -le int2 Returns True if int1 is less than or equal to int2.
int1 -lt int2 Returns True if int1 is less than int2.
int1 -ne int2 Returns True if int1 is not equal to int2.

The string operators are used to evaluate string expressions. Table 14.3 lists the string operators that are supported by the three shell programming languages.

Table 14.3. The test command’s string operators.

Operator Meaning

str1 = str2 Returns True if str1 is identical to str2.
str1 != str2 Returns True if str1 is not identical to str2.
str Returns True if str is not null.
-n str Returns True if the length of str is greater than zero.
-z str Returns True if the length of str is equal to zero.

The test command’s file operators are used to perform functions such as checking to see whether a file exists and checking to see what kind of file is passed as an argument to the test command. Table 14.4 lists the test command’s file operators.

Table 14.4. The test command’s file operators.

Operator Meaning

-d filename Returns True if file, filename is a directory.
-f filename Returns True if file, filename is an ordinary file.
-r filename Returns True if file, filename can be read by the process.
-s filename Returns True if file, filename has a nonzero length.
-w filename Returns True if file, filename can be written by the process.
-x filename Returns True if file, filename is executable.

The test command’s logical operators are used to combine two or more of the integer, string, or file operators or to negate a single integer, string, or file operator. Table 14.5 lists the test command’s logical operators.

Table 14.5. The test command’s logical operators.

Command Meaning

! expr Returns True if expr is not true.
expr1 -a expr2 Returns True if expr1 and expr2 are true.
expr1 -o expr2 Returns True if expr1 or expr2 is true.


Previous Table of Contents Next