Until list1

do

List2

Done

В отличие от предыдущего случая условием выполнения команд между do и done является ненулевое значение возврата. Программный цикл может быть размещен внутри другого цикла (вложенный цикл). Оператор break прерывает ближайший к нему цикл. Если в программу ввести оператор break с уровнем 2 (break 2), то это обеспечит выход за пределы двух циклов и завершение программы.

Оператор continue передает управление ближайшему в цикле оператору while.

Оператор цикла с перечислением for:

for name in [wordlist]

do

List

Done

где name - переменная; wordlist - последовательность слов; list - список команд. Переменная name получает значение первого слова последовательности wordlist, после этого выполняется список команд, стоящий между do и done. Затем name получает значение второго слова wordlist и снова выполняется список list. Выполнение прекращается после того, как кончится список wordlist.

Ветвление по многим направлениям case. Команда case обеспечивает ветвление по многим направлениям в зависимости от значений аргументов команды. Формат:

case <string> in

s1) <list1>;;

s2) <list2>;;

.

.

.

sn) <listn>;;

*) <list>

Esac

3десь list1, list2... listn - список команд. Производится сравнение шаблона string с шаблонами s1, s2... sk... sn. При совпадении выполняется список команд, стоящий между текущим шаблоном sk и соответствующими знаками;;. Пример:

echo -n 'Please, write down your age'

Read age

case $age in

test $age -le 20) echo 'you are so young';;

test $age -le 40) echo 'you are still young';;

test $age -le 70) echo 'you are too young';;

*)echo 'Please, write down once more'

Esac

В конце текста помещена звездочка * на случай неправильного ввода числа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: