Linux: Полное руководство
Шрифт:
Арифметическое условное выражение имеет формат
♦ – eq — равно;
♦ – ne — не равно;
♦ – lt — меньше;
♦ – le — меньше или равно;
♦ – gt — больше;
♦ – ge — больше или равно.
Таким образом, можно переписать предыдущий пример с использованием оператора if:
Листинг 8.2. Пример использования оператора if
Командные интерпретаторы bash и ksh поддерживают циклы типа for, while, until и select, а интерпретатор sh — только циклы for и while.
Синтаксис:
В результате подстановки шаблона получается список слов. Переменная получает значение первого слова из этого списка, и выполняется список команд, стоящий между do и done. Затем переменная получает значение очередного слова из списка слов, и снова выполняется список команд. Повторение прекращается по исчерпании слов в списке. Отсутствие конструкции [in шаблон] эквивалентно записи in $@.
Список слов можно сформировать и вручную:
Еще раз напомню, что любой список в bash нужно заканчивать точкой с запятой.
Пример использования цикла с перечислением: допустим, у вас не хочет собираться некий программный пакет — он рассчитывал, что имена заголовочных файлов в некотором каталоге имеют расширение .h, а у вас они такого расширения не имеют (установлена другая версия библиотеки). При этом содержание этих файлов его устраивает. Так создадим символические ссылки, чтобы он нашел заголовки по знакомому имени:
Синтаксис:
Оператор выполняет
Тот
же самый обратный отсчет можно реализовать и с помощью цикла for, если у вас установлена утилита seq, печатающая последовательность (sequence) чисел с заданным шагом:Синтаксис:
Оператор выполняет
Синтаксис:
В результате подстановки шаблона получается список слов. К этим словам оператор добавляет порядковые номера и выводит весь набор в стандартный поток ошибок (stderr). Если шаблон опущен, то вместо него используется список позиционных параметров. После этого оболочка выводит приглашение и считывает строку из стандартного потока ввода (stdin). Если строка содержит номер, соответствующий какому-либо слову из списка, то переменная получает это слово в качестве значения. Если в строке подходящего номера нет, то значением переменной становится пустая строка. После этого выполняется список команд, и процедура повторяется до тех пор, пока в строке ввода не встретится символ конца файла (введите Ctrl+D) или пока в списке команд не встретится команда break или return.
Этот оператор полезен для создания нумерованных пунктов меню. Например, у меня в каталоге
Листинг 8.3. Пример использования оператора select
Запустив этот сценарий, я увижу на экране:
Последняя строка — это приглашение, устанавливаемое переменной окружения PS3.
8.5. Условная подстановка параметров