Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Пользователю -> Костромин В.А. -> "Самоучитель Linux для пользователя" -> 61

Самоучитель Linux для пользователя - Костромин В.А.

Костромин В.А. Самоучитель Linux для пользователя — СПб.: БХВ Петербург, 2003. — 672 c.
ISBN 5-94157-183-6
Скачать (прямая ссылка): samouchiteldlyapolz2003.djvu
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 274 >> Следующая


5.8.3. Оператор case

Формат оператора case таков:

case word in I [(] pattern | | pattern ] ... ) list ;; ] ... esac

Команда case вначале производит раскрытие слова word и пытается сопоставить результат с каждым из образцов pattern поочередно. После нахождения первого совпадения дальнейшие проверки не производятся, выполня- Гпава 5. Оболочка bash.

141

ется список команд, стоящий после того образца, с которым обнаружено совпадение. Значение, возврашаемое оператором, равно 0. если совпадений с образцами не обнаружено. В противном случае возвращается значение, выдаваемое последней командой из соответствующего списка.

Следующий пример использования оператора case заимствован из системного скрипта /ctc/rc u/r sysinit.

case "$utc" in yea I true) ctjockflags= "$clockflags -u"; c^ckpef="$rluckdef (utc)";

r I

no I false)

clockflags="$c.l ockfl/.gs —localtime"; cluckdef="$clockdef (localtime)";

r і

esac

Если переменная принимает значение yes или true, то будет выполнена первая пара команд, а если ее значение равно по или false — вторая пара.

5.8.4. Оператор select

Оператор select позволяет организовать интерактивное взаимодействие с пользователем. Он имеет следующий формат: select name [ in word; ] do list ; done

Вначале из шаблона word формируется список слов, соответствующих шаблону. Этот набор слов выводится в стандартный поток ошибок, причем каждое слово сопровождается порядковым номером. Если шаблон word пропущен, таким же образом выводятся позиционные параметры. После этого выдается стандартное приглашение ps3, и оболочка ожидает ввода строки на стандартном вводе. Если введенная строка содержит число, соответствующее одному из отображенных слов, то переменной name присваивается значение, равное этому слову. Если введена пустая строка, то номера и соответствующие слова выводятся заново. Если введено любое другое значение, переменной name присваивается нулевое значение. Введенная пользователем строка запоминается в переменой REPLY. Список команд list выполняется с выбранным значением переменной name.

Вот небольшой скрипт:

#! /bm/sh

echo "Какую ОС Вы предпочитаете?" 142_

і Самоучитель Linux для пользователя

select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do break

done

echo "Вы бы выбрали $var"

Если сохранить этот текст в файле, сделать файл исполняемым и запустить, на экран будет выдан следующий запрос:

Какую ОС Вы предпочитаете? 1) Linux 2} Gnu Hurd

3) Free BSD

4) Other

Нажмите любую из 4 предложенных цифр (1, 2, 3, 4). Если вы, например, введете 1, то увидите собщение:

Вы бы выбрали Linux

5.8.5. Оператор for

Оператор for работает немного не так. как в обычных языках программирования. Вместо того, чтобы организовывать увеличение или уменьшение на единицу значения некоторой переменной при каждом проходе цикла, он при каждом проходе цикла присваивает переменной очередное значение из заданного списка слов. В целом конструкция выглядит примерно так:

for паше in words do list done

Правила пострс ения списков команд (list) такие же, как и в операторе if.

Пример.

Следующий скрипт создает файлы foo_l, foo_2 и foo_3: for a in 1 2 3 ; do touch foi $a

done

В общем случае оператор for имеет формат:

for паше [ in word; ] do list ; done

Вначале производится раскрытие слова word в соответствии с правилами раскрытия выражений, приведенными выше. Затем переменной name поочередно приснаи _іаютсл полученные значения, и каждый раз выполняется список команд list. Если in word пропущено, то список команд list выполняется один раз для каждого позиционного параметра, который задан.

В Linux имеется команда seq, которая воспринимает в качестве аргументов два числа и выдает последовательность всех чисел, расположенных между за- Гпава 5. Оболочка bash.

143

данными. С помощью этой команды можно заставить for в bash работать точно так же, как аналогичный оператор работает в обычных языках программирования. Для этого достаточно записать цикл for следующим образом:

for a in 5 ( seq 1 10 ) ; do cat file_$a

done

Эта команда выводит на экран содержимое десяти файлов: "file Г',... .., "fiteJO".

5.8.6. Операторы while и until

Оператор while работает подобно if, только выполнение операторов из списка Iio с2 циклически продолжается до тех пор, пока верно условие, и прерывается, если условие не верно. Конструкция выглядит следующим образом:

while listl do list2 done Пример:

while L -d mydirectory ] ; do

Is -1 irr/directory » logfile echo — SEPARATOR - » logfile sleep 60

done

Такая программа будет протоколировать содержание каталога mydirectory ежеминутно до тех пор, пока каталог существует.

Оператор until аналогичен оператору while:

until listl do list2 done.

Отличие заключается в том, что результат, возвращаемый при выполнении списка операторов listl, берется с отрицанием: list2 выполняется в том случае, если последняя команда в списке ILstl возвращает ненулевой статус выхода.

5.8.7. Функции Синтаксис
Предыдущая << 1 .. 55 56 57 58 59 60 < 61 > 62 63 64 65 66 67 .. 274 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100