Другие имена | [ |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Операционная система | Unix , Unix-подобный , Plan 9 , IBM i |
Платформа | Кроссплатформенность |
Тип | Командование |
Лицензия | coreutils : GPLv3 + |
test - это утилита командной строки, встречающаяся в Unix , Plan 9 и Unix-подобных операционных системах, которая оценивает условные выражения . test был преобразован во встроенную команду оболочки в 1981 году с UNIX System III и в то же время стал доступен под альтернативным именем [ . [1]
Обзор [ править ]
Команда test
в Unix оценивает expression
параметр. В самых последних реализациях оболочки это встроенная оболочка , хотя внешняя версия все еще существует. Во второй форме команды [ ]
(квадратные скобки) должны быть окружены пробелами (это потому, что [
это программа, а оболочки, совместимые с POSIX, требуют пробела между именем программы и ее аргументами). Нужно проверить явно для имен файлов в C оболочки . Подстановка имени файла ( подстановка ) вызывает завершение работы сценария оболочки.
test
Команда не следует путать с [[
зарезервированным словом , который был введен с ksh88. Последний является не командой, а частью синтаксиса ksh88 и не применяет подстановку имени файла к выражениям glob.
test
Встроенная в GNU coreutils версия была написана Кевином Браунсдорфом и Мэтью Брэдберном. [2] Команда test также была перенесена в операционную систему IBM i . [3]
Синтаксис [ править ]
тестовое выражение
или же
[ выражение ]
Аргументы [ править ]
Для создания этого параметра используются следующие аргументы:
-e FileName - имя файла существует
Все остальные аргументы возвращают истину, если объект (файл или строка) существует и указанное условие истинно.
-b Filename - возвращает значение True выхода, если указанное FileName существует и является специальным файлом блока -c FileName - FileName является символьным специальным файлом -d FileName - FileName является каталогом-f FileName - FileName - это обычный файл -g FileName - установлен бит Set Group ID для FileName -h FileName - FileName является символической ссылкой -k FileName - установлен липкий бит FileName -L FileName - FileName является символической ссылкой -p FileName - FileName - именованный канал (FIFO) -r FileName - FileName читается текущим процессом -s FileName - FileName имеет размер больше 0 -t FileDescriptor - FileDescriptor открыт и связан с терминалом -u FileName - FileName's SetБит идентификатора пользователя установлен
-w FileName - флаг записи FileName включен. Однако FileName не будет доступен для записи в файловой системе только для чтения, даже если тест показывает true.
-x FileName - флаг выполнения FileName установленЕсли указанный файл существует и является каталогом,True
значение выхода указывает, что текущий процесс имеет разрешение на переходcd
в каталог.
Нестандартные расширения Korn Shell :
файл1 -nt файл2 - файл1 новее, чем файл2файл1 -ot файл2 - файл1 старше, чем файл2файл1 -ef файл2 - файл1 - другое имя для файла2 - ( символическая ссылка или жесткая ссылка )
Строковые аргументы [ править ]
В Perl эти разделы перевернуты: eq
это строковый оператор и ==
числовой оператор, и так далее для остальных.
-n String1 - длина переменной String1 отлична от нуля -z String1 - длина переменной String1 равна 0 (нулю)String1 = String2 - переменные String1 и String2 идентичныString1 ! = String2 - переменные String1 и String2 не идентичныString1 - истина, если переменная String1 не является пустой строкой
Числовые аргументы [ править ]
Integer1 -eq integer2 - переменные integer1 и integer2 являются алгебраически равны -ne - не равна -gt - больше , чем -ной - больше или равно -lt - меньше , чем -le - меньше или равно
Операторы [ править ]
test
аргументы можно комбинировать со следующими операторами:
! - Оператор унарного отрицания -a - Оператор двоичного И -o - Оператор двоичного ИЛИ (-a
оператор имеет более высокий приоритет, чем-o
оператор) \ (Выражение \) - Скобки для группировки должны быть экранированы обратной косой чертой\
Операторы -a
и -o
вместе со скобками для группировки являются расширениями XSI [4] и поэтому не переносимы. В портативных сценариях оболочки, тот же эффект может быть достигнут путем соединения нескольких инвокации test
вместе с &&
и ||
операторов и скобок.
Статус выхода [ изменить ]
Эта команда возвращает следующие значения выхода:
0 - параметр Expression имеет значение true 1 - параметр Expression неверен или отсутствует > 1 - произошла ошибка
Примеры [ править ]
1. Чтобы проверить, является ли файл несуществующим или пустым, введите:
если тест ! -s " $ 1 ", тогда echo $ 1 не существует или пуст. фи
Если файл, указанный первым позиционным параметром процедуры оболочки, $ 1, не существует или имеет размер 0, тестовая команда отображает сообщение. Если $ 1 существует и имеет размер больше 0, тестовая команда ничего не отображает.
Примечание. Между функцией -s и именем файла должен быть пробел.
Кавычки около $ 1 гарантируют, что тест работает правильно, даже если значение $ 1 является пустой строкой. Если кавычки опущены и $ 1 является пустой строкой, тестовая команда отображает сообщение об ошибке:
тест: ожидаемый аргумент.
2. Чтобы провести сложное сравнение, введите:
if [ " $ # " -lt 2 ] || ! [ -e " $ 1 " ] затем выйдите из fi
Если для процедуры оболочки задано менее двух позиционных параметров или файл, указанный в $ 1, не существует, процедура оболочки завершается. Специальная переменная оболочки $ # представляет количество позиционных параметров, введенных в командной строке, запускающей эту процедуру оболочки.
См. Также [ править ]
- Список команд Unix
- Оболочка Unix
- найти (Unix)
Ссылки [ править ]
- ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Изменения оболочки Борна в System III
- ^ test (1) - coreutils - Debian buster - Debian Manpages
- ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
- ^ IEEE Std 1003.1, 2004, документация дляtest
Дальнейшее чтение [ править ]
- Роббинс, Арнольд; Нельсон Х. Ф. Биби (2005). «6.2.4 Тестовая команда». Классический сценарий оболочки: скрытые команды, раскрывающие всю мощь Unix . O'Reilly Media, Inc., стр. 120–128. ISBN 978-0-596-55526-9.
- Ян Шилдс (20 февраля 2007 г.). «Совет по Linux: функции тестирования и сравнения Bash» . IBM DeveloperWorks .
- Уильям Шоттс (2013). «27 - Управление потоком: ветвление с if». Командная строка Linux . Пресс без крахмала. С. 381–390. ISBN 978-1-59327-389-7. (бесплатная загрузка)
Внешние ссылки [ править ]
В Wikibook Guide to Unix есть страница по темам: Команды |
- - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от The Open Group
- - Руководство по командам пользователя Linux
- - Руководство программиста Plan 9 , том 1