Учебники

Unix / Linux — Типы циклов оболочки

В этой главе мы обсудим циклы оболочки в Unix. Цикл — это мощный инструмент программирования, который позволяет многократно выполнять набор команд. В этой главе мы рассмотрим следующие типы циклов, доступных программистам оболочки:

Вы будете использовать разные циклы в зависимости от ситуации. Например, цикл while выполняет данные команды, пока данное условие не останется истинным; цикл before выполняется до тех пор, пока данное условие не станет истинным.

Как только у вас будет хорошая практика программирования, вы приобретете опыт и тем самым начнете использовать соответствующий цикл в зависимости от ситуации. Здесь циклы while и for доступны в большинстве других языков программирования, таких как C , C ++, PERL и т. Д.

Вложенные петли

Все циклы поддерживают концепцию вложенности, что означает, что вы можете поместить один цикл в другой, подобный одному или другим циклам. Эта вложенность может увеличиваться неограниченное количество раз в зависимости от ваших требований.

Вот пример вложения цикла while. Другие циклы могут быть вложены в зависимости от требований программирования аналогичным образом —

Вложение в то время как петли

Можно использовать цикл while как часть тела другого цикла while.

Синтаксис

while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true

   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done

   Statement(s) to be executed if command1 is true
done

пример

Вот простой пример вложения цикла. Давайте добавим еще один цикл обратного отсчета внутри цикла, который вы использовали для подсчета до девяти —

#!/bin/sh

a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

Это даст следующий результат. Важно отметить, как здесь работает echo -n . Здесь опция -n позволяет echo избегать печати символа новой строки.