Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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)

Ссылки [ править ]

  1. ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Изменения оболочки Борна в System III
  2. ^ test (1) - coreutils - Debian buster - Debian Manpages
  3. ^ IBM . «Qshell для программирования IBM System i версии 7.2» (PDF) . Проверено 5 сентября 2020 .
  4. ^ 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. (бесплатная загрузка)

Внешние ссылки [ править ]

  • test - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от The Open Group
  • test(1) -  Руководство по командам пользователя Linux
  • test(1) -  Руководство программиста Plan 9 , том 1