Previous Section  < Day Day Up >  Next Section

B.5. Test Operators

Table B-6 lists the operators that are used with test and the [...] and [[...]] constructs. They can be logically combined with -a ("and") and -o ("or") and grouped with escaped parenthesis (\( ... \)). The string comparisons < and > and the [[...]] construct are not available in versions of bash prior to 2.0.

Table B-6. Test operators

Operator

True if...

-a file

file exists

-b file

file exists and is a block device file

-c file

file exists and is a character device file

-d file

file exists and is a directory

-e file

file exists; same as -a

-f file

file exists and is a regular file

-g file

file exists and has its setgid bit set

-G file

file exists and is owned by the effective group ID

-h file

file exists and is a symbolic link

-k file

file exists and has its sticky bit set

-L file

file exists and is a symbolic link

-n string

string is non-null

-N file

file was modified since it was last read

-O file

file exists and is owned by the effective user ID

-p file

file exists and is a pipe or named pipe (FIFO file)

-r file

file exists and is readable

-s file

file exists and is not empty

-S file

file exists and is a socket

-t N

File descriptor N points to a terminal

-u file

file exists and has its setuid bit set

-w file

file exists and is writeable

-x file

file exists and is executable, or file is a directory that can be searched

-z string

string has a length of zero

fileA -nt fileB

fileA modification time is newer than fileB

fileA -ot fileB

fileA modification time is older than fileB

fileA -ef fileB

fileA and fileB point to the same file

stringA = stringB

stringA equals stringB (POSIX version)

stringA == stringB

stringA equals stringB

stringA != stringB

stringA does not match stringB

stringA =~ regexp

stringA matches the extended regular expression regexp[3]

stringA < stringB

stringA sorts before stringB lexicographically

stringA > stringB

stringA sorts after stringB lexicographically

exprA -eq exprB

Arithmetic expressions exprA and exprB are equal

exprA -ne exprB

Arithmetic expressions exprA and exprB are not equal

exprA -lt exprB

exprA is less than exprB

exprA -gt exprB

exprA is greater than exprB

exprA -le exprB

exprA is less than or equal to exprB

exprA -ge exprB

exprA is greater than or equal to exprB

exprA -a exprB

exprA is true and exprB is true

exprA -o exprB

exprA is true or exprB is true


[3] Only available in bash version 3.0 and later. May only be used inside [[...]].

    Previous Section  < Day Day Up >  Next Section