Поиск по сайту:

Как использовать цикл while в сценариях оболочки


В bash for, while и until — это три конструкции цикла. Хотя каждый цикл отличается синтаксически и функционально, его цель — перебор блока кода при вычислении определенного выражения.

Цикл Until используется для выполнения блока кода до тех пор, пока выражение не будет признано ложным. Это полная противоположность циклу while. Цикл while выполняет блок кода, пока выражение истинно, а цикл until делает обратное.

until [ expression ]
do
	code block
	...
	...
done

Давайте разберем синтаксис.

  • Чтобы запустить цикл, вам следует использовать ключевое слово Until, за которым следует выражение в одинарных или двойных фигурных скобках.
  • Выражение должно оцениваться как ложное до тех пор, пока не начнется выполнение блока кода.
  • Фактический блок кода находится между do и Done.

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

Создание бесконечного цикла в скриптах

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

count=0
until false
do
	echo "Counter = $count"
	((count++))
	sleep 2
done

Создание однострочных операторов

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

until false; do echo "Counter = $count"; ((count++)); sleep 2; done

Изменение потока с помощью оператора разрыва и продолжения

Вы можете использовать операторы Break и continue внутри цикла while. Оператор break выйдет из цикла и передаст управление следующему оператору, а оператор continue пропустит текущую итерацию и начнет следующую итерацию в цикле.

Я использую тот же пример бесконечного цикла. Здесь, когда счетчик равен пяти, оператор continue перейдет к следующей итерации, пропуская остальную часть тела цикла. Аналогично, цикл прерывается, когда счетчик равен или превышает 10.

count=0
until false
do
  ((count++))
  if [[ $count -eq 5 ]]
  then
    continue
  elif [[ $count -ge 10 ]]
  then
    break
  fi
  echo "Counter = $count"
done

Вот и все, что касается этой статьи. Скоро мы представим вам еще одну интересную статью «пока», тогда продолжайте читать и продолжайте поддерживать нас.