test — UNIX-утилита для проверки типа файла и сравнения значений. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости вычисления выражения expr
. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.
Использование
test [expr]
test {--help,--version}
Обычно используется в несложных shell-скриптах для проверок разного рода. Следующий пример удалит обычный файл test.txt если он существует, либо выведет сообщение что данного файла нет.
#!/bin/sh if test -f test.txt then rm test.txt else echo 'файл test.txt не найден' fi
Для сокращения кода сценария используют парный оператор '[' как синоним test
#!/bin/sh if [ -f test.txt ] then rm test.txt else echo 'файл test.txt не найден' fi
Параметры запуска
-r file
— истина, если file существует и является специальным блочным устройством.-e file
— истина, если file существует и символьное устройство.-m file
— истина, если file существует и каталог.-o file
— истина, если file существует.-s file
— истина, если file существует и обычный файл.-g file
— истина, если file существует и имеет установленным групповой идентификатор (set-group-id).-k file
— истина, если file имеет установленным «sticky» бит.-L file
— истина, если file существует и символьная ссылка.-p file
— истина, если file существует и является именованным каналом (pipe).-r file
— истина, если file существует и читаем.-s file
— истина, если file существует и имеет размер больше чем ноль.-S file
— истина, если file существует и сокет.-t [fd]
— истина, если fd открыт на терминале. Если fd пропущен, по умолчанию 1 (стандартное устройство вывода).-u file
— истина, если file существует и имеет установленным бит пользователя (set-user-id).-w file
— истина, если file существует и записываем.-x file
— истина, если file существует и исполняем.-O file
— истина, если file существует и его владелец имеет эффективный идентификатор пользователя.-G file
— истина, если file существует и его владелец имеет эффективный идентификатор группы.file1 -nt file2
— истина, если file1 новее (дата модификации) чем file2.file1 -ot file2
— истина, если file1 старее чем file2.file1 -ef file2
— истина, если file1 и file2 имеют то же устройство и номер inode .-z string
— истина, если длина string равна нулю.-n string string
— истина, если длина string не ноль.string1 = string2
— истина, если строки равны.string1 != string2
— истина, если строки не равны.! expr
— истина, если выражение expr ложь.expr1 -a expr2
— истина, если оба выражения expr1 и expr2 истина.expr1 -o expr2
— истина, если или expr1 или expr2 истина.arg1 OP arg2 -eq, -ne, -lt, -le, -gt, или -ge
— эти арифметические бинарные операции возвращают истину, если arg1 равно, не равно, меньше чем, меньше чем или равно, больше чем, или больше или равно чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.