Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

9.3.5. Циклы

Операторы цикла for и while позволяют выполнить команду или последовательность команд несколько раз.

9.3.5.1. Оператор for

Оператор for выполняет последовательность команд для каждого элемента списка. Он имеет формат:

for variable<CR>

in a_list_of_values<CR>

do<CR>

command_1<CR>

command_2<CR>

.

.

.

last command<CR>

done<CR>

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

Переменная может иметь любое имя. Например, если ваша переменная названа var, то ссылка в списке команд на $var сделает значение доступным. Если оператор in опущен, то значением для var будет набор аргументов, заданный в команде и доступный в специальном параметре $*. Список команд между ключевым словом do и done будет выполнен для каждого значения.

Когда команды будут выполнены для последнего элемента списка, программа будет выполнять строку ниже done.

9.3.5.2. Оператор while

Оператор цикла while использует 2 группы команд. Он будет выполнять последовательность команд во второй группе (список do ... done) до тех пор пока последняя команда в первой группе (список while) возвращает состояние "истина", означающее, что выражение после do может быть выполнено.

Общий формат оператора цикла while:

while<CR>

command_1<CR>

.

.

.

last command<CR>

do<CR>

command_1<CR>

.

.

.

last command<CR>

done<CR>

Например, программа enter.name использует цикл while для ввода списка имен в файл. Программа состоит из следующих командных строк:

$ cat enter.name<CR>

while

read x

do

echo $x>>xfile

done

$

Внеся некоторые добавления, получим следующую программу:

$ cat enter.name<CR>

echo Please type in each person's name and than a <CR>

echo Please end the list of names with a <^d>

while read x

do

echo $x>>xfile

done

echo xfile contains the following names:

cat xfile

$

Обратите внимание, что после завершения цикла программа выполняет команды ниже done.

В первых двух командах echo используются специальные символы, так что вы должны воспользоваться кавычками для отмены специального значения. На следующем экране приведены результаты выполнения программы enter.name:

$ enter.name<CR>

Please type in each person's name and than a <CR>

Please end the list of names with a <^d>

Mary Lou<CR>

Janice<CR>

<^d>

xfile contains the following names:

Mary Lou

Janice

$

После того, как цикл завершится, программа распечатает все имена, содержащиеся в xfile.

Соседние файлы в предмете Операционные системы