Циклы в 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