test — UNIX-утилита для проверки типа а и сравнения значений. Возвращает код возврата 0 (ложь) или 1 (истина) в зависимости вычисления выражения expr. Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.
Начиная с UNIX System III утилита стала встроенной, также появилась вторая её форма - [.
Использование 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. Парный оператор требует пробела между скобками потому, что [ (скобка) является командой оболочки, а POSIX совместимые оболочки требует пробела между командой и её аргументами.
#!/bin/sh if [ -f test.txt ] then rm test.txt else echo 'файл test.txt не найден' fi
Параметры запуска -b file — истина, если file существует и является специальным блочным устройством. -c file — истина, если file существует и символьное устройство. -d file — истина, если file существует и является каталогом. -e file — истина, если file существует. -f 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 не ноль. string1 = string2 — истина, если строки равны. string1 != string2 — истина, если строки не равны. ! expr — истина, если выражение expr ложь. expr1 -a expr2 — истина, если оба выражения expr1 и expr2 истина. expr1 -o expr2 — истина, если хотя бы одно из выражений expr1 или expr2 истина. arg1 %оператор% arg2 -eq, -ne, -lt, -le, -gt, или -ge — эти арифметические бинарные операции возвращают истину, если arg1 равно (-eq), не равно (-ne), меньше чем (-lt), меньше чем или равно (-le), больше чем (-gt), или больше или равно (-ge), чем arg2, соответственно. arg1 и arg2 могут быть положительными целыми, отрицательными целыми, или специальными выражениями -l string, которые вычисляют длину string.
Примечания
Ссылки (см. GNU Coreutils)
Категория:Утилиты Unix