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

Версия для печатиОтправить другуPDF version
TEST(1)               Справочник основных команд FreeBSD               TEST(1)

НАЗВАНИЕ
     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 файл ]
FreeBSD 6.2                      31 июля 2006                      FreeBSD 6.2
Голосов пока нет

Вставай, Україно!

Литература