Введение в Unix

Оператор цикла for


Пусть имеется командный файл makelist (процедура)

$ cat makelist sort +1 -2 people | tr -d -9 | pr -h Distribution | lpr.

Если вместо одного файла people имеется несколько, например:

adminpeople, hardpeople, softpeople,...,

то необходимо повторить выполнение процедуры с различными файлами. Это возможно с помощью for - оператора. Синтаксис:

for <переменная> in <список значений> do <список команд> done

Ключевые слова for, do, done пишутся с начала строки.

Пример: (изменим процедуру makelist):

for file in adminpeople, hardpeople, softpeople do Sort +1 -2 $file | tr ... | lpr done.

Можно использовать метасимволы Shell в списке значений.

Пример:

for file in *people (для всех имен, кончающихся на people)

do ... done.

Если in опущено, то по умолчанию в качестве списка значений берется список аргументов процедуры, в которой содержится цикл, а если цикл не в процедуре, то - список параметров командной строки (то есть в качестве процедуры выступает команда).

Пример:

for file do ... done

Для вызова makelist adminpeople hardpeople softpeople будет сделано то же самое.



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