Циклы в Bash
Как и в любом другом языке, циклы очень удобны. С Bash вы можете использовать forциклы, whileциклы и untilциклы.
for
Вот структура цикла for:
for var in ${list}
do
your_commands
doneПример:
#!/bin/bash
users="devdojo bobby tony"
for user in ${users}
do
echo "${user}"
doneКраткое изложение примера:
Сначала мы указываем список пользователей и сохраняем значение в переменной с именем
$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