-B file: if the file exists and is a special block file, it is true.
-C file: if the file exists and is a special character file, it is true.
-D file: if the file exists and is a directory, it is true.
-E file: true if the file exists
-F file: if the file exists and is a rule file, it is true.
-G file: if the file exists and the value of SGID is set, it is true.
-H file: true if the file exists and is a compliant Link
-K file: if the file exists and the "Sticky" bit value is set
-P file: if the file exists and is a named pipe, it is true.
-R file: true if the file exists and is readable
-S file: true if the file exists and its size is greater than zero
-U file: true if the file exists and the SUID bit is set
-W file: true if the file exists and can be written
-X file: true if the file exists and is executable
-O file: true if the file exists and is owned by a valid user ID
-Z string if the string length is 0, it is true
-N string: true if the string length is not 0
String1 = string2 if the two strings are equal, it is true.
String1! = String2: true if two strings are not equal
Int1-EQ int2 if int1 is equal to int2, true
Int1-ne int2: true if int1 is not equal to int2
Int1-lt int2 if int1 is smaller than int2, true
Int1-Le int2 if int1 is smaller than or equal to int2, true
Int1-GT int2 if int1 is greater than int2, true
Int1-ge int2 if int1 is greater than or equal to int2, true
! If expr is false, the composite expression is true. Expr can be any valid test expression
Expr1-A expr2 if both expr1 and expr2 are true, the entire formula is true.
Expr1-O expr2 if either expr1 or expr2 is true, the entire formula is true.