test — утилита проверки условий

НАЗВАНИЕ

test,  — утилита проверки условий

СИНТАКСИС

test выражение

[ выражение ]

ОПИСАНИЕ

Утилита test проверяет условие, и если оно выполняется, возвращает 0

(истина).  В противном случае возвращается 1 (ложь).  Если условие не

задано, test также возвратит 1 (ложь).Все операторы и флаги представляют собой отдельные аргументы к данной утилите.

Для создания выражений используются следующие примитивы:

-b файл

Истина если файл существует и является специальным файлом

блочного устройства.

-c файл

Истина если файл существует и является специальным файлом

посимвольного устройства.

-d файл

Истина если файл существует и является каталогом.

-e файл

Истина если файл существует (независимо от типа).

-f файл

Истина если файл существует и является обычным файлом.

-g файл

Истина если файл существует и имеет установленный флаг

«установить идентификатор группы» (set group ID).

-h файл

Истина если файл существует и является символической ссыл-

кой.  Этот оператор сохранён для совместимости с предыду-

щими версиями программы.

Не стоит полагаться на его нали-

чие, вместо этого используйте -L.

-k файл

Истина если файл существует и имеет установленный бит

sticky.

-n строка

Истина если длина строки строка ненулевая.

-p файл

Истина если файл является именованным каналом (FIFO).

-r файл

Истина если файл существует и доступен на чтение.

-s файл

Истина если файл существует и его длина больше нуля.

-t дескриптор_файла

Истина если файл, дескриптор которого задаётся аргументом

дескриптор_файла, открыт и связан с терминалом.

-u файл

Истина если файл существует и имеет установленный флаг

«установить идентификатор польльзователя» (set user ID).

-w файл

Истина если файл существует и доступен на запись.  Истина

лишь означает, что флаг записи включен.  В файловой системе

доступной только на чтение файл не является записываемым,

даже если эта проверка показывает обратное.

-x файл

Истина если файл существует и является исполняемым.  Истина

лишь означает, что флаг запуска включен.  Если файл явля-

ется каталогом, истина означает, что внутри него возможно

производить поиск.

-z строка

Истина если длина аргумента строка нулевая.

-L файл

Истина если файл существует и является символической ссылкой.

-O файл

Истина если файл существует и его владелец совпадает с

идентификатором эффективного пользователя данного процесса.

-G файл

Истина если файл существует и его группа совпадает с иден-

тификатором эффективной группы данного процесса.

-S файл

Истина если файл существует и является сокетом.

файл1 -nt файл2

Истина если файл1 существует и новее файла файл2.

файл1 -ot файл2

Истина если файл1 существует и старее файла файл2.

файл1 -ef файл2

Истина если файлы файл1 и файл2 существуют и ссылаются на

один и тот же файл.

строка

Истина если строка не является пустой.

s1 = s2

Истина если строки s1 и s2 идентичны.

s1 != s2

Истина если строки s1 и s2 отличаются.

s1 < s2

Истина если строка s1 предшествует строке s2 основываясь на

двоичном значении их символов.

s1 > s2

Истина если строка s1 следует за s2 основываясь на двоичном

значении их символов.

n1 -eq n2

Истина если целые числа n1 и n2 алгебраически равны.

n1 -ne n2

Истина если целые числа n1 и n2 алгебраически не равны.

n1 -gt n2

Истина если целое n1 алгебраически больше целого n2.

n1 -ge n2

Истина если целое n1 алгебраически больше либо равно целому  n2.

n1 -lt n2

Истина если целое n1 алгебраически меньше целого n2.

n1 -le n2

Истина если целое n1 алгебраически меньше либо равно целому n2.

Если файл является символической ссылкой, то test полностью разыменовы-

вает её и далее вычисляет выражение уже с конечным файлом, за исключением

примитив -h и -L.

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

! выражение

Истина если выражение ложно.

выражение1 -a выражение2

Истина если оба выражение1 и выражение2 истинны.

выражение1 -o выражение2

Истина если хотя бы одно из выражений выражение1 и

выражение2 истинно.

(выражение)

Истина если выражение истинно.

Оператор -a имеет более высокий приоритет, чем оператор -o

Некоторые командные оболочки имеют встроенную команду test с похожей либо

идентичной функциональностью.  Обратитесь к странице справочника

builtin(1).

НЕОДНОЗНАЧНОСТЬ ГРАММАТИКИ

Грамматика утилиты test по своей сути неоднозначна.  Чтобы обеспечить

определённую степень непротиворечивости, случаи, рассматриваемые стандар-

том IEEE Std 1003.2 («POSIX.2») в разделе D11.2/4.62.4, вычисляются

строго в соответствии с правилами, указанными в документе стандарта.  Все

остальные случаи ограничены неоднозначностями в семантике команды.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

Утилита test возвращает одно из следующих значений:

0       Выражение истинно.

1       Выражение ложно или отсутствует.

>1      Произошла ошибка.

СМОТРИ ТАКЖЕ

builtin(1), expr(1), sh(1), symlink(7)

СТАНДАРТЫ

Утилита test реализует расширение спецификации IEEE Std 1003.2

(«POSIX.2»).

ПРОБЛЕМЫ

В случае использования -a и -o, всегда вычисляются обе части выражения, в

отличие от логических операторов sh(1).  Например, следующей командой

будет проверяться возможность записи в файл, несмотря на то, что первое

выражение является ложным.  Результатом этого будет ненужное обращение к

файловой системе:

[ -z abc -a -w файл ]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *