Структура "while", также обеспечивающая выполнение расчетов, предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле.
Оператор цикла "while" имеет структуру:
while условие do список команд done
### # print-50: Структура "while" # Расчет позволяет напечатать 50 # экземпляров файла "file-22" n=0 while [ $n -lt 50 ] # пока n < 50 do n=`expr $n + 1` cat file-22 > /dev/lp done
n=`expr $n + 1`
Как и вообще в жизни, можно реализовать то же самое и сложнее. Расчет "рr-br" приведен для иллюстрации бесконечного цикла и использования команды "break", которая обеспечивает прекращение цикла.
### # рr-br: Структура "while" c "break" # Расчет позволяет напечатать 50 # экземпляров файла "file-22" n=0 while true do if [ $n -lt 50 ] # если n < 50 then n=`expr $n + 1` else break fi cat file-22 > /dev/lp done
В отличие от команды "break" команда "continue [n]" лишь прекращает выполнение текущего цикла и возвращает на НАЧАЛО цикла. Она также может быть с параметром. Например, "continue 2" означает выход на начало второго (если считать из глубины) вложенного цикла.
Команда "exit [n]" позволяет выйти вообще из процедуры с кодом возврата "0" или "n" (если параметр "n" указан). Эта команда может использоваться не только в циклах. Даже в линейной последовательности команд она может быть полезна при отладке, чтобы прекратит выполнение (текущего) расчета в заданной точке.