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

5.8.2 Оператор 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, которые мы рассмотрим чуть ниже.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

8.6. rc.test-iptables.txt

Из книги Iptables Tutorial 1.1.19 автора Andreasson Oskar

8.6. rc.test-iptables.txt Сценарий rc.test-iptables.txt предназначен для проверки различных цепочек но может потребовать дополнительных настроек, в зависимости от вашей конфигурации, например, включения ip_forwarding или настройки masquerading и т.п. Тем не менее в большинстве случаев с базовыми


5.8.1 Операторы if и test (или [])

Из книги Google. Прорыв в духе времени автора Малсид Марк

5.8.1 Операторы if и test (или []) Конструкция условного оператора в слегка упрощенном виде выглядит так: if list1 then list2 else list3 fi где list1, list2 и list3 - это последовательности команд, разделенные запятыми и оканчивающиеся точкой с запятой или символом новой строки. Кроме того, эти


GLAT (Google Labs Aptitude Test)

Из книги Базы данных: конспект лекций автора Автор неизвестен

GLAT (Google Labs Aptitude Test) Умеете ли вы решать головоломки вроде тех, с которыми каждый день сталкиваются специалисты Google Labs? Пройдите GLAT и узнаете. Постарайтесь ответить на все вопросы, вложите заполненный бланк[16] в конверт и отправьте в Google Labs. Если наберете достаточное


1. Оператор Select – базовый оператор языка структурированных запросов

Из книги Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ автора Мейерс Скотт

1. Оператор Select – базовый оператор языка структурированных запросов Центральное место в языке структурированных запросов SQL занимает оператор Select, с помощью которого реализуется самая востребованная операция при работе с базами данных – запросы.Оператор Select


Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete Операторы new и delete с размещением встречаются в C++ не слишком часто, поэтому в том, что вы с ними не знакомы, нет ничего страшного. Вспомните (правила 16 и 17), что когда вы пишете такое


16.1. Библиотека Test::Unit

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир


Условные выражения

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Условные выражения Условное выражение позволяет нам выполнить одно из двух входящих в него выражений в зависимости от выполнения или невыполнения какого-либо условия. В качестве условия используется значение логической переменной или результат вычисления логического


Условные выражения

Из книги VBA для чайников автора Каммингс Стив

Условные выражения Условное выражение позволяет нам выполнить одно из двух входящих в него выражений в зависимости от выполнения или невыполнения какого-либо условия. В качестве условия используется значение логической переменной или результат вычисления логического


Условные выражения

Из книги Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript автора Розенцвейг Гэри

Условные выражения Условное выражение позволяет нам выполнить одно из двух входящих в него выражений в зависимости от выполнения или невыполнения какого-либо условия. Существует также другая, "вырожденная" разновидность условного выражения, содержащая только одно


Урок 10. Условные выражения

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Урок 10. Условные выражения Из урока 5 «Создание кнопок для пользователя» вы узнали, как пользователь может использовать кнопки для перехода от одного кадра к другому. Пользователь решает, какую часть ролика он хочет увидеть следующей, щелкает по кнопке, и сценарий,


Пример 7-2. Эквиваленты команды test -- /usr/bin/test, [ ], и /usr/bin/[

Из книги Операционная система UNIX автора Робачевский Андрей М.

Пример 7-2. Эквиваленты команды test -- /usr/bin/test, [ ], и /usr/bin/[ #!/bin/bashechoif test -z "$1"then echo "Аргументы командной строки отсутствуют."else echo "Первый аргумент командной строки: $1."fiechoif /usr/bin/test -z "$1" # Дает тот же рузультат, что и встроенная команда "test".then echo "Аргументы командной строки


Google Test Analytics

Из книги автора

Google Test Analytics Несмотря на то что анализ рисков нужен разработке как воздух, этот процесс часто происходит как попало. Если данным вообще удается покинуть головы участников команды, то часто они просто фиксируются в таблицах. Что в этом плохого?— У данных нет единой схемы,