Jump to content

тест (Unix)

тест
Другие имена [
Разработчик(и) Различные с открытым исходным кодом и коммерческие разработчики разработчики
Написано в С
Операционная система Unix , Unix-подобные , Plan 9 , IBM i
Платформа Кросс-платформенный
Тип Команда
Лицензия основные утилиты : GPLv3+
План 9: МОЯ лицензия

test — это утилита командной строки , встречающаяся в Unix , Plan 9 и Unix-подобных операционных системах, которая оценивает условные выражения . test был преобразован во встроенную команду оболочки в 1981 году в UNIX System III и в то же время стал доступен под альтернативным именем [ . [1]

The test команда в Unix оценивает expression параметр. В самых последних реализациях оболочки это встроенная оболочка , хотя внешняя версия все еще существует. Во второй форме команды [ ] (скобки) должны быть окружены пробелами (это потому, что [ — это программа, а оболочки, совместимые с POSIX, требуют пробела между именем программы и ее аргументами). Необходимо явно проверять имена файлов в C. оболочке Подстановка имени файла ( подстановка ) приводит к завершению сценария оболочки.

The test команду не следует путать с командой [[ зарезервированное слово, которое было введено в ksh88. Последний не является командой, а является частью синтаксиса ksh88 и не применяет подстановку имени файла к выражению glob.

Версия test пакет GNU coreutils был написан Кевином Браунсдорфом и Мэтью Брэдберном. [2] Команда доступна в виде отдельного пакета для Microsoft Windows как часть UnxUtils коллекции , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [3] Команда test также была перенесена в операционную систему IBM i . [4]

Синтаксис

[ редактировать ]

test expression или [ expression ]

Аргументы

[ редактировать ]

Следующие аргументы используются для создания этого параметра. Все аргументы возвращаются True если объект (файл или строка) существует и указанное условие истинно.

Аргумент Возврат True если файл
это специальный файл блока
это специальный файл символов
это каталог
существует
это обычный файл
Set Group ID установлен бит
-час это символическая ссылка
установлен липкий бит
это символическая ссылка
-п это именованный канал (FIFO)
доступен для чтения текущим процессом
имеет размер больше 0
FileDescriptor открыт и связан с терминалом
установлен Set User ID бит
включен флаг записи
имеет выполнения флаг

Для -x аргумент, если указанный файл существует и является каталогом, True значение выхода указывает, что текущий процесс имеет разрешение на изменение cd в каталог.

Нестандартные Korn Shell расширения

[ редактировать ]
file1 -nt file2 - file1 is newer than file2
file1 -ot file2 - file1 is older than file2
file1 -ef file2 - file1 is another name for file2 - (symbolic link or hard link)

Строковые аргументы

[ редактировать ]

В Perl эти разделы перевернуты: eq является строковым оператором и == — числовой оператор и так далее для остальных.

-n String1 - the length of the String1 variable is nonzero
-z String1 - the length of the String1 variable is 0 (zero)
String1 = String2 - String1 and String2 variables are identical
String1 != String2 - String1 and String2 variables are not identical
String1 - true if String1 variable is not a null string

Числовые аргументы

[ редактировать ]
Integer1 -eq Integer2 - Integer1 and Integer2 variables are algebraically equal
-ne - not equal
-gt - greater than
-ge - greater or equal 
-lt - less than
-le - less or equal

Операторы

[ редактировать ]

test аргументы можно комбинировать со следующими операторами:

! - Unary negation operator
-a - Binary AND operator
-o - Binary OR operator (the -a operator has higher precedence than the -o operator)
\(Expression\) - Parentheses for grouping must be escaped with a backslash \

The -a и -o операторы вместе с круглыми скобками для группировки являются расширениями XSI. [5] и поэтому не являются портативными. В переносимых сценариях оболочки того же эффекта можно добиться, подключив несколько вызовов test вместе с && и || операторы и круглые скобки.

Статус выхода

[ редактировать ]

Эта команда возвращает следующие значения выхода:

0 - The Expression parameter is true
1 - The Expression parameter is false or missing
>1 - An error occurred

1. Чтобы проверить, является ли файл несуществующим или пустым, введите:

 if test ! -s "$1"
 then
   echo $1 does not exist or is empty.
 fi

Если файл, указанный первым позиционным параметром процедуры оболочки, $1, не существует или имеет размер 0, команда тестирования отображает сообщение. Если $1 существует и имеет размер больше 0, команда тестирования ничего не отображает.

Примечание. Между функцией -s и именем файла должен быть пробел.

Кавычки вокруг $1 гарантируют правильную работу теста, даже если значение $1 представляет собой нулевую строку. Если кавычки опущены и $1 — пустая строка, команда тестирования отображает сообщение об ошибке:

test: argument expected.

2. Чтобы выполнить сложное сравнение, введите:

 if [ "$#" -lt 2 ] || ! [ -e "$1" ]
 then
   exit
 fi

Если процедуре оболочки задано менее двух позиционных параметров или файл, указанный в $1, не существует, процедура завершается. Специальная переменная оболочки $# представляет количество позиционных параметров, введенных в командной строке, которая запускает эту процедуру оболочки.

См. также

[ редактировать ]
  1. ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Изменения Bourne Shell в System III
  2. ^ test(1) — coreutils — Debian buster — Debian Manpages
  3. ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
  4. ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
  5. ^ IEEE Std 1003.1, 2004 г., документация для test

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2c835c02a1869759857969dda924e21c__1704140340
URL1:https://arc.ask3.ru/arc/aa/2c/1c/2c835c02a1869759857969dda924e21c.html
Заголовок, (Title) документа по адресу, URL1:
test (Unix) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)