Другие названия | [ |
---|---|
Разработчик (и) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Операционная система | Unix, Unix-подобный, Plan 9, IBM i |
Тип | Команда |
Лицензия | coreutils : GPLv3 + |
test - это утилита командной строки, найденная в Unix, Plan 9 и Unix-like операционные системы, вычисляющие условные выражения. test был преобразован во встроенную команду оболочки в 1981 году с UNIX System III и в то же время стал доступен под альтернативным именем [.
Команда test
в Unix вычисляет параметр выражение
. В самых последних реализациях оболочки это встроенная оболочка , хотя внешняя версия все еще существует. Во второй форме команды []
(скобки) должны быть окружены пробелами (это потому, что [
- это программа и POSIX совместимые оболочки требуется пробел между именем программы и ее аргументами). Необходимо явно проверить имена файлов в оболочке C. Подстановка имени файла (подстановка ) вызывает завершение работы сценария оболочки.
Не следует путать команду test
с зарезервированным словом [[
, которое было введено с ksh88. Последний является не командой, а частью синтаксиса ksh88 и не применяет подстановку имени файла к выражениям glob.
Версия test
, включенная в GNU coreutils, была написана Кевином Браунсдорфом и Мэтью Брэдберном. Команда test также была перенесена в операционную систему IBM i.
тестовое выражение
или
[выражение ]
Для создания этого параметра используются следующие аргументы:
-eFileName - FileName существует
Все остальные аргументы возвращают истину, если объект (файл или строка) существует, и указанное условие истинно.
-bFilename - возвращает истинное значение выхода, если указанное FileName существует и является специальным файлом блока -c FileName - FileName - это специальный файл с символами -dFileName - FileName - каталог -fFileName - FileName - это обычный файл -g FileName - FileName's Set Group ID установлен бит -h FileName - FileName - символическая ссылка -kFileName - установлен бит закрепления FileName -L FileName - FileName - это символическая ссылка -pFileName - FileName - это именованный канал (FIFO) -r FileName - имя файла доступно для чтения текущему процессу -s FileName - FileName имеет размер больше 0 -t FileDescriptor - FileDescriptor открыт и связан с терминалом -uFileName - установлен FileName Set User ID бит
-wFileName - установлен флаг записи FileName. Однако имя файла не будет доступно для записи в файловой системе, доступной только для чтения, даже если тест показывает истину
-xFileName - установлен флаг execute в имени файла. Если указанный файл существует и является каталогом, тоИстинное значение
выхода указывает, что текущий процесс имеет разрешение на изменениеcd
в каталоге.
Нестандартные Korn Shell расширения:
file1 -nt file2 - file1 новее, чем file2 file1 -ot file2 - файл1 старше, чем файл2 файл1 -ef файл2 - файл1 - другое имя для файла2 - (символическая ссылка или жесткая ссылка )
В Perl эти разделы поменяны местами: eq
- строковый оператор, ==
- числовой оператор, и так далее для остальных.
-nString1 - длина переменной String1 отлична от нуля -z String1 - длина переменной String1 равна 0 (ноль) String1 = String2 - переменные String1 и String2 идентичны String1 ! = String2 - переменные String1 и String2 не идентичны String1 - истина, если переменная String1 не является пустой строкой
Integer1 -eq Integer2 - Переменные типа Integer1 и Integer2 алгебраически равны -ne - не равны -gt - больше -ge - больше или равно -lt - меньше -le - меньше или равно
аргументы test
можно комбинировать со следующими операторами:
!- Оператор унарного отрицания -a - Оператор двоичного И -o - Оператор двоичного ИЛИ (оператор-a
имеет более высокий приоритет, чем оператор-o
) \ (Выражение \) - Скобки для группировки должны быть экранированы обратной косой чертой\
Операторы -a
и -o
вместе с круглыми скобками для группировки являются расширениями XSI и поэтому не переносятся. В переносимых сценариях оболочки тот же эффект может быть достигнут путем соединения нескольких вызовов test
вместе с операторами и
||
и скобками.
Эта команда возвращает следующие значения выхода:
0- параметр Expression имеет значение true 1 - параметр Expression имеет значение false или отсутствует>1 - Произошла ошибка
1. Чтобы проверить, является ли файл несуществующим или пустым, введите:
if test! -s "$ 1", тогда echo $ 1 не существует или пуст. fi
Если файл, указанный первым позиционным параметром процедуры оболочки, $ 1, не существует или имеет размер 0, тестовая команда отображает сообщение. Если $ 1 существует и имеет размер больше 0, тестовая команда ничего не отображает.
Примечание: между функцией -s и именем файла должен быть пробел.
Кавычки вокруг $ 1 гарантируют, что тест работает правильно, даже если значение $ 1 является пустой строкой. Если кавычки опущены и $ 1 представляет собой пустую строку, команда test отображает сообщение об ошибке:
test: ожидался аргумент.
2. Чтобы выполнить сложное сравнение, введите:
if ["$ #" -lt 2] || ! [-e "$ 1"] затем выйти из файла fi
Если для процедуры оболочки задано менее двух позиционных параметров или файл, указанный в $ 1, не существует, процедура оболочки завершается. Специальная переменная оболочки $ # представляет количество позиционных параметров, введенных в командной строке, запускающей эту процедуру оболочки.
Wikibook Руководство по Unix имеет страницу на тема: Commands |
test
- Справочник по командам и утилитам, Единая спецификация UNIX, выпуск 7 из The Open Group test (1)
– Linux Команды пользователя Руководство test (1)
– Plan 9 Руководство программиста, том 1