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

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


В этой статье мы рассмотрим, как использовать break и continue в сценариях bash. В bash есть три основные конструкции цикла (for, while, until). Операторы Break и continue встроены в bash и используются для изменения хода ваших циклов. Эта концепция разрыва и продолжения доступна в популярных языках программирования, таких как Python.

type -a break continue

Выйдите из цикла с помощью оператора Break.

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

help break

Основной синтаксис разрыва.

break [n]

n is optional

Взгляните на приведенный ниже пример. Это простой цикл for, который перебирает диапазон значений от 1 до 20 с шагом 2. Условный оператор оценивает выражение, и когда оно имеет значение true($val=9), тогда он запустит оператор Break, и цикл завершится, пропуская оставшиеся итерации.

#!/usr/bin/bash

for val in {1..20..2}
do
  If [[ $val -eq 9 ]]
  then
     break
  else
  echo "printing ${val}"
fi
done

Пропустить итерацию с помощью оператора continue

Что делать, если вы не хотите полностью выходить из цикла, а пропускаете блок кода при выполнении определенного условия? Это можно сделать с помощью оператора continue. Оператор continue пропустит выполнение блока кода при выполнении определенного условия и управление будет передано обратно оператору цикла для следующей итерации.

Чтобы получить доступ к справке.

help continue

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

#!/usr/bin/bash

for val in {1..20..2}
do
  If [[ $val -eq 9 ]]
  then
      continue
  fi
  echo "printing ${val}"
done

Если вы знали python, то поведение break и continue в Python такое же. Но Python предоставляет еще один оператор управления циклом, называемый pass.

Pass похож на оператор null, и интерпретатор прочитает его, но не выполнит никакой операции. Это просто приводит к отсутствию операции. Bash не предоставляет аналогичного оператора, но мы можем эмулировать это поведение, используя ключевое слово true или двоеточие(:). И true, и двоеточие встроены в оболочку и не выполняют никаких операций.

type -a : true

Взгляните на приведенный ниже пример. Когда оператор условный оценивается как true($val=9), тогда оператор true ничего не делает и цикл продолжается.

#!/usr/bin/bash

for val in {1..20..2}
do
  If [[ $val -eq 9 ]]
  then
      true
  fi
  echo "printing ${val}"
done

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