BASH Программирование

Вложенный цикл в примерах сценария Bash

Вложенный цикл в примерах сценария Bash

В программировании или написании сценариев цикл - одна из самых основных и эффективных концепций. Цикл выполняет определенные задачи, пока не будут выполнены указанные условия. У каждого языка программирования или сценариев есть разные способы реализации концепции.

В этом руководстве ознакомьтесь с вложенным циклом в сценариях bash.

Вложенный цикл

Цикл по определению выполняет определенные задачи до тех пор, пока не будут выполнены условия. Что, если в задачу входит запуск цикла? Это концепция вложенного цикла. Петля внутри петли.

Это основная структура цикла.

while (условие)
# что-нибудь

Здесь цикл while будет продолжать выполнять задачи, объявленные внутри блока, пока выполняется условие. В случае вложенного цикла while структура будет выглядеть так.

# основной цикл
while (условие)
# вложенный цикл
while (условие)
# что-нибудь

Теоретически вложенные циклы могут доходить до бесконечности. Во многих ситуациях вложенные циклы могут быть идеальным решением.

Цикл в сценарии bash

Bash - мощный язык сценариев. В bash есть разные структуры цикла. Самые популярные - это циклы for, while и until. Если вы раньше знакомы с программированием на C / C ++, то синтаксис определенно будет выглядеть очень похожим.

Для петель

Цикл For - один из самых распространенных и универсальных выходов форм и т. Структура циклов в сценариях bash. Структура также очень похожа на цикл for в C / C ++.

Структура цикла for в bash следующая.

for ((инициализировать; условие; приращение)); делать
# что-нибудь
Выполнено

Структура очень понятна. Раздел инициализации не является обязательным. Однако условие и приращение имеют более высокий приоритет.

Приступим к действию. Вот очень упрощенный сценарий bash, который реализует цикл.

для ((i = 0; i < 5 ; i++)); do
эхо "привет, мир"
Выполнено

Также возможно использовать список / диапазон в качестве условия цикла. Это особенно полезно при работе со списком файлов, диапазонами номеров, массивами, выводами команд и т. Д. Структура выглядит примерно так.

для пункта в ; делать
# что-нибудь
Выполнено

Например, следующий скрипт пять раз напечатает «привет, мир».

для i в 1… 5; делать
эхо "привет, мир"
Выполнено

Что делать, если нам нужно работать с содержимым каталога? В следующем примере сценарий распечатает все файлы в каталоге / usr / bin.

для i в / usr / bin / *; делать
эхо $ я
Выполнено

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

для ((i = 0; i < 3 ; i++)); do
для ((j = 0; j < 2 ; j++)); do
эхо "привет, мир"
Выполнено
Выполнено

6 раз будет выведено «hello world». Внешний цикл будет выполняться трижды, внутренний цикл - два раза.

Пока петли

Цикл while - еще один популярный и интуитивно понятный цикл, доступный в сценариях bash. Синтаксис выглядит так.

пока ; делать
# что-нибудь
Выполнено

В следующем примере скрипт пять раз напечатает «hello world».

число = 1
в то время как [$ num -le 5]; делать
эхо "привет, мир"
число = $ (($ число + 1))
Выполнено

Как бы выглядел вложенный цикл while? Вот простой пример.

num_a = 1
num_b = 1
а [$ num_a -le 5]; делать
а [$ num_b -le 5]; делать
эхо "привет, мир"
num_b = $ (($ num_b + 1))
Выполнено
num_a = $ (($ num_a + 1))
Выполнено

До петель

Если у вас есть опыт программирования на C / C ++, то вы знакомы с циклом do-while. К сожалению, в bash ничего подобного нет. Однако до тех пор, пока цикл не будет работать аналогичным образом. Синтаксис также выглядит примерно так же.

до того как [ ]; делать
# что-нибудь
Выполнено

Разница между циклом while и until - это условие проверки. Пока выполняется условие теста, цикл while будет продолжать работать. Однако цикл до будет продолжаться, только если условие ложно.

Вот быстрый пример цикла while. Он напечатает таблицу умножения 2.

num_a = 1
до [$ num_a -gt 10]; делать
эхо $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
Выполнено

Разрыв петли

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

Здесь следующий цикл for прекратит выполнение, как только достигнет условия.

для ((i = 1; i<=100;i++)); do
эхо $ я
если [$ i -eq 10]; тогда
перерыв
фи
Выполнено

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

Последние мысли

Вложенный цикл - это простая и эффективная концепция для понимания и реализации. Надеюсь, это руководство смогло описать и продемонстрировать концепцию.

Заинтересованы в других руководствах по сценариям на bash? Ознакомьтесь со следующими руководствами.

  • Бесконечный цикл Bash
  • Пользовательский ввод сценария bash
  • Функция Bash, возвращающая массив

Удачных вычислений!

Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...