Циклы в Bash
Как и в любом другом языке, циклы очень удобны. С Bash вы можете использовать for
циклы, while
циклы и until
циклы.
for
Вот структура цикла for:
Пример:
Краткое изложение примера:
Сначала мы указываем список пользователей и сохраняем значение в переменной с именем
$users
.После этого мы начинаем наш
for
цикл сfor
ключевого слова.Затем мы определяем новую переменную, которая будет представлять каждый элемент из предоставленного нами списка. В нашем случае мы определяем переменную с именем
user
, которая будет представлять каждого пользователя из этой$users
переменной.Затем мы указываем
in
ключевое слово, за которым следует наш список, по которому мы будем проходить.В следующей строке мы используем
do
ключевое слово, которое указывает, что мы будем делать на каждой итерации цикла.Затем мы указываем команды, которые хотим запустить.
Наконец, мы замыкаем цикл ключевым
done
словом.
Вы также можете использовать for
для обработки ряда чисел. Например, вот один из способов пройти от 1 до 10:
while
Структура цикла while очень похожа на сам for
цикл:
Вот пример цикла while
:
Сначала мы указали переменную-счетчик и установили для нее значение 1
, затем внутри цикла мы добавили счетчик, используя этот оператор: ((counter++))
. Таким образом, мы гарантируем, что цикл будет выполняться только 10 раз и не будет выполняться вечно. Цикл завершится, как только счетчик станет равным 10, поскольку это то, что мы установили в качестве условия: while [[ $counter -le 10 ]]
.
Давайте создадим скрипт, который запрашивает у пользователя имя и не допускает пустой ввод:
Теперь, если вы запустите вышеописанное и просто нажмете Enter, не вводя никаких данных, цикл будет запускаться снова и снова и снова запрашивать ваше имя, пока вы действительно не введете какие-либо данные.
until
Разница между циклами until
и while
заключается в том, что until
цикл будет выполнять команды внутри цикла до тех пор, пока условие не станет истинным.
Состав:
Пример:
continue & break
Как и в случае с другими языками, вы также можете использовать continue
и со своими bash-скриптами:break
continue
сообщает вашему bash-скрипту, что нужно остановить текущую итерацию цикла и начать следующую итерацию.
Синтаксис оператора continue следующий:
Аргумент [n] является необязательным и может быть больше или равен 1. Когда задан [n], возобновляется n-й охватывающий цикл. продолжить 1 эквивалентно продолжению.
Мы также можем использовать команду continue аналогично команде прерывания для управления несколькими циклами.
break
сообщает вашему bash-скрипту немедленно завершить цикл.
Синтаксис оператора Break имеет следующую форму:
[n] является необязательным аргументом и должен быть больше или равен 1. Если указан [n], происходит выход из n-го охватывающего цикла. перерыв 1 эквивалентен перерыву.
Пример:
Мы также можем использовать команду Break с несколькими циклами. Если мы хотим выйти из текущего рабочего цикла, внутреннего или внешнего, мы просто используем прерывание, но если мы находимся во внутреннем цикле и хотим выйти из внешнего цикла, мы используем прерывание 2.
Пример:
Сценарий bash начнется с a=1 и перейдет во внутренний цикл, а когда он достигнет b=5, он разорвет внешний цикл. Мы можем использовать только прерывание вместо прерывания 2, чтобы прервать внутренний цикл и посмотреть, как это повлияет на результат.
Last updated