Test
test — UNIX-утилита для проверки типа файла и сравнения значений. Возвращает код возврата 0 (ложь) или 1 (истина) в зависимости вычисления выражения expr . Выражения могут быть как унарными, так и бинарными. Унарные выражения часто используются для проверки статуса файла. Также допустимо сравнение чисел и строк.
Начиная с UNIX System III утилита стала встроенной, также появилась вторая её форма - [.[1]
Использование
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.
Примечания
Ссылки
Команды Unix |
---|
| |
---|
Файловые утилиты | |
---|
Текстовые утилиты | |
---|
Shell-утилиты | |
---|
другие утилиты | |
---|
|
|
|