Основы работы в ОС Linux


Оператор test и условные выражения


Условные выражения, используемые в операторе test, строятся на основе проверки файловых атрибутов, сравнения строк и обычных арифметических сравнений. Сложные выражения строятся из следующих унарных или бинарных операций ("элементарных кирпичиков"):

  • -a file

    Верно, если файл с именем file существует.

  • -b file

    Верно, если file существует и является специальным файлом блочного устройства.

  • -c file

    Верно, если file существует и является специальным файлом символьного устройства.

  • -d file

    Верно, если file существует и является каталогом.

  • -e file

    Верно, если файл с именем file существует.

  • -f file

    Верно, если файл с именем file существует и является обычным файлом.

  • -g file

    Верно, если файл с именем file существует и для него установлен бит смены группы.

  • -h file или -L file

    Верно, если файл с именем file существует и является символической ссылкой.

  • -k file

    Верно, если файл с именем file существует и для него установлен "sticky'' bit.

  • -p file

    Верно, если файл с именем file существует и является именованным каналом (FIFO).

  • -r file

    Верно, если файл с именем file существует и для него установлено право на чтение

  • -s file

    Верно, если файл с именем file существует и его размер больше нуля.

  • -t fd



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

  • -u file

    Верно, если файл с именем file существует и для него установлен бит смены пользователя.

  • -w file

    Верно, если файл с именем file существует и для него установлено право на запись.

  • -x file

    Верно, если файл с именем file существует и является исполняемым.

  • -O file

    Верно, если файл с именем file существует и его владельцем является пользователь, на которого указывает эффективный идентификатор пользователя.

  • -G file

    Верно, если файл с именем file существует и принадлежит группе, определяемой эффективным идентификатором группы.

  • -S file

    Верно, если файл с именем file существует и является сокетом.

  • -N file

    Верно, если файл с именем file существует и изменялся с тех пор, как был последний раз прочитан.

  • file1 -nt file2


    Верно, если файл file1 имеет более позднее время модификации, чем file2.

  • file1 -ot file2

    Верно, если файл file1 старше, чем file2.

  • file1 -ef file2

    Верно, если файлы file1 и file2 имеют одинаковые номера устройств и индексных дескрипторов (inode).

  • -o optname

    Верно, если задействована опция оболочки optname. Пояснения см. на странице man bash.

  • -z string

    Верно, если длина строки равна нулю.

  • -n string

    Верно, если длина строки не равна нулю.

  • string1 == string2

    Верно, если строки совпадают. Вместо == может использоваться =.

  • string1 !== string2

    Верно, если строки не совпадают.

  • string1 < string2

    Верно, если строка string1 лексикографически предшествует строке string2 (для текущей локали).

  • string1 > string2

    Верно, если строка string1 лексикографически стоит после строки string2 (для текущей локали).

  • arg1 OP arg2

    Здесь OP - это одна из операций арифметического сравнения: -eq (равно), -ne (не равно), -lt (меньше чем), -le (меньше или равно), -gt (больше), -ge (больше или равно). В качестве аргументов могут использоваться положительные или отрицательные целые.



Из этих элементарных условных выражений можно строить сколь угодно сложные с помощью обычных логических операций ОТРИЦАНИЯ, И и ИЛИ:

  • !(expression)

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

  • expression1 -a expression2

    Булевский оператор AND (И). Верен, если верны оба выражения.

  • expression1 -o expression2

    Булевский оператор OR (ИЛИ). Верен, если верно любое из двух выражений.



Такие же условные выражения используются и в операторах while и until, которые мы рассмотрим чуть ниже.


Содержание раздела