Операторы цикла while и until
Командный интерпретатор поддерживает также традиционные циклы по условию со следующим синтаксисом:
<оператор while> ::=
while <команды> do <команды> done
<оператор until> ::=
until <команды> do <команды> done
Выполняются команды, задающие условие, и проверяется код возврата последней из них. Если это ноль (истина), выполняются команды в теле цикла while или завершается выполнение цикла until. Если это не ноль (ложь), завершается работа цикла while или выполняется очередная итерация цикла until.
На основе этих циклов часто создаются программы-"следилки", работающие бесконечно:
$ cat watchfor # watchfor: watching for log ins and log outs... PATH=/usr/bin new=/tmp/wfor1.$$ old=/tmp/wfor2.$$ >$old # создает пустой файл
while : # бесконечный цикл do who >$new diff $old $new mv $new $old sleep 60 done | awk ' />/ { $1 = "in: "; print } /</ { $1 = "out: "; print }' $