Команда test используется в управляющих конструкциях if, while и until, она проверяет некоторое условие и вырабатывает нулевой или ненулевой код завершения в зависимости от того, оказалось ли условие, соответственно, истинным или ложным.

test  условие

Следующая запись является синонимом команды test:

[ условие ]

Условие может включать, помимо прочих, следующие примитивы:

-r файл Истина, если файл существует и доступен для чтения.
-w файл Истина, если файл существует и доступен для записи.
-x файл Истина, если файл существует и является выполнимым.
-f файл Истина, если файл существует и является обычным файлом.
-d файл Истина, если файл существует и является каталогом.
-c файл Истина, если файл существует и является специальным символьным файлом.
-b файл Истина, если файл существует и является специальным блочным файлом.
-p файл Истина, если файл существует и является именованным каналом.
-s файл Истина, если файл существует и имеет ненулевой размер.
-n s1 Истина, если цепочка символов s1 имеет ненулевую длину.
s1 = s2 Истина, если цепочки символов s1 и s2 равны.
s1 != s2 Истина, если цепочки символов s1 и s2 не равны.
n1 -eq n2 Истина, если целые числа n1 и n2 алгебраически равны. На месте -eq могут быть также операции сравнения -ne (не равно), -gt (больше), -ge (больше или равно), -lt (меньше), -le (меньше или равно).

Примитивы комбинируются с помощью круглых скобок, а также следующих операций (в порядке уменьшения приоритета):

! Унарная операция отрицания
-a Логическое И.
-o Логическое ИЛИ.

Обратим внимание на то, что квадратные скобки, обрамляющие условие, и каждый компонент условия должны быть выделены пробелами.