Цикл for
Цикл for имеет следующий синтаксис:
<цикл for> ::=
for <имя переменной> [in <список слов>] do <команды> done
<список слов> ::=
<слово>{<пробел> <слово>}
<команды> ::=
<команда> {<; или перевод строки> <команда>}
Переменная последовательно получает значение очередного слова из списка, и для этого значения выполняются команды в теле цикла. Цикл завершается, когда пройден весь список слов. По умолчанию в качестве списка слов используются аргументы командной строки.
Рассмотрим пару примеров таких циклов:
$ for i in 1 2 3 4 5 > do > echo $i > done
Обратите внимание, что командный интерпретатор распознает цикл, выдает вторичное приглашение, и выполняет цикл только после его завершения ключевым словом done.
Список слов для цикла обычно порождается динамически. Например, путем раскрытия шаблонов имен файлов:
$ for i in *.c *.h > do > echo $i > diff -b old/$i $i > echo > done | pr -h "diff `pwd`/old `pwd`" | lp & [4] 1430
Можно также порождать его командой, подставляя ее результаты:
$ for i in `pick *.c *.h` > do > echo $i: > diff -b old/$i $i > done | pr | lp