Bash является стандартной командной оболочкой, которая встречается у большинства дистрибутивов MacOS и Linux. Точно также называется язык для работы с соответствующим ПО. Его изучают преимущественно системные администраторы и те, кто хочет более профессионально владеть UNIX-подобными операционными системами.

Язык Bash поддерживает переменные, условные и арифметические операторы, операции по вводу и выводу информации, массивы и разнообразные функции, а также циклы. С его помощью удается создавать скрипты, которые помогают ускорять работу программного обеспечения. Дополнительно они служат средствами автоматизации некоторых рутинных процессов.

Сегодня предстоит познакомиться не со всеми инструментами Bash-Scripts, а только с циклами. С их помощью удается выполнять различные задачи, а также обеспечивать автоматизацию некоторых операций и выбор желаемого алгоритма в зависимости от ситуации. Информация рассчитана на тех, кто уже хоть немного знаком с принципами разработки.

Основная терминология

Перед тем как работать с различными циклами, программисту потребуется запомнить несколько ключевых определений. Они пригодятся не только в Bash скриптах, но и в иных языках программирования:

  1. Алгоритм – набор некоторых инструкций и правил, необходимых для решения поставленной перед разработчиком задачи.
  2. Аргумент – значение, передаваемой в команду или функцию.
  3. Символ – простейшая единица отображения данных в программе или запросе. Равняется одной буквенной или символьной записи.
  4. Интерфейс командной строки – пользовательский интерфейс, базирующийся на основе текста. Он используется для управления документами и их просмотра.
  5. Константы – значение, которое не меняется во время выполнения различных операций в скриптах (исходном коде).
  6. Массив – множество значений. Списки или группы схожих типов значений данных, которые были предварительно сгруппированы.
  7. Переменная – место хранения информации в программе.
  8. Оператор – объект, который умеет через специальные команды умеет манипулировать операндами.
  9. Операнд – объекты, которыми можно манипулировать через операторы языка.

Все предложенные определения и понятия помогут лучше работать и считывать исходные коды приложений. Отдельное внимание предстоит уделить терминологии, тесно связанной с циклами. Без них выполнять большинство операций не получится.

Цикл – это…

Перед тем как работать с циклами, необходимо понять, что собой представляет соответствующий компонент. Он иногда называется «петля» или «ветвление». Цикл – это последовательность инструкций, которые будут повторять один и тот же процесс раз за разом. Происходит это до тех пор, пока приложение не получает команду на остановку или не выполняет прописанное в скрипте условие. В циклах программное обеспечение «задает вопрос» и, если ответ указывает на выполнение операции, действие реализовывается. После этого «петля» запускается снова, обрабатывая аналогичную задачу.

В Bash петля может использоваться для автоматизации некоторых распространенных процессов и команд. Рекомендуется запомнить еще несколько понятий, связанных с «ветвлением»:

  1. Бесконечный цикл (бесконечная петля). Так описывается непрерывное повторение блока кода приложения. Оно будет функционировать вечно, на постоянной основе. Обычно соответствующая ситуация возникает из-за условных операторов, а также функций. Они перенаправляют код обратно в используемый фрагмент, реализовывая его снова и снова. Часто становится следствием неправильно реализованной логики в скрипте.
  2. Итерация – один проход через набор операций, работающих с исходным кодом. Наиболее распространенным вариантом работы с итерациями является внедрение в скрипт.
  3. Указатель – переменная, которая включает в себя адрес места в памяти.

Теперь можно приступать к более детальному изучению петель в Bash на наглядных примерах. Изучать соответствующее направление намного проще будет тем, кто уже знаком с ветвлениями в других языках разработки.

Классификация

Петли у большинства языков разработки могут быть разными. В зависимости от типа loop будет меняться принцип работы рассматриваемого компонента и особенности реализации различных задач. Bash не является исключением.

Существуют различные варианты «петель»:

  • цикл for (in do) – со счетчиком;
  • цикл while – с постусловием;
  • цикл until – с предусловием.

Bash допускает использование loops как в скриптах, так и непосредственно в командной оболочке. Далее каждый вариант петли будет изучен более подробно.

Циклы for

For in do – самый простой вариант петли. Он у большинства языков программирования называется циклом со счетчиком. Особо полезен тогда, когда программист точно знает количество итераций (сколько раз нужно повторить фрагмент) алгоритма. For позволяет просто обрабатывать по очереди все элементы в пределах массива без контроля количества повторений.

For предусматривает несколько синтаксических форм и умеет вести себя различными способами. Все зависит от первоначально поставленной перед разработчиком цели. Для того, чтобы перебирать компоненты в списке, рекомендуется пользоваться следующей формой for in do:

Циклы в Bash

Каждая петля for, независимо от типа, начинается с ключевого слова for. Далее ситуация зависит от того, какой именно вариант рассматриваемого элемента применяется. В предложенном после for указывается имя переменной, в которой сохраняется каждый компонент списка. Далее указывается ключевое слово in и список. Спектр команд на выполнение размещаются между do и done.

Наглядный пример

Чтобы лучше понять, как выполняется for in do, рекомендуется рассмотреть процесс на наглядном примере. Предстоит написать скрипт, который будет выводить номера от 1 до 5:

  1. Сначала формируется команда:  $ vi for1.sh.
  2. Далее пишется фрагмент: #!/bin/bash
    for number in 1 2 3 4 5
    do
    echo $number
    done.
  3. Скрипт запускается: $ chmod +x for1.sh
    ./for1.sh.
Циклы в Bash

Выше – наглядный пример получившегося результата. Петле можно передавать любые массивы. Пример – вывод той или иной команды:

Циклы в Bash
Циклы в Bash

Соответствующий фрагмент с for I in do выведет список всех сетевых интерфейсов, которые были подключены к системе. Петли допускают не только вывод операций, но и их непосредственную реализацию.

Как в C++

For в Bash может быть реализован в нескольких формах. Первый рассмотренный вариант является элементарным и используется достаточно часто в большинстве скриптов. Второй вариант for – это СИ-подобная форма. Она напоминает реализацию петли в C и C++. Это непосредственный цикл со счетчиком. Он включает в себя несколько компонентов:

  • инициализатор счетчика;
  • условие для выполнения;
  • непосредственные операции над счетчиком.

Синтаксическая форма представления такого for in do выглядит так:

Циклы в Bash

Соответствующий вариант for является более сложным, но он позволяет выполнять более сложные операции. С его помощью удается не только перебирать массивы информации, но и выполнять строго определенное количество итераций. Лучше всего изучать процесс на наглядном примере.

Код и его пояснение

Вот так будет выглядеть фрагмент кода, который наглядно объяснит принцип работы for со счетчиком:

Циклы в Bash
Циклы в Bash
Циклы в Bash

Результат может показаться странноватым, но здесь необходимо обратить внимание на выполнение проверки условия:

  1. Имеющееся значение сравнивает с эталоном.
  2. Действие с переменной счетчиком реализовывается сразу после завершения ключевого (основного) блока команд. Только после этого осуществляется сравнение.
  3. При первом выполнении i = 1, после обработки кода – 2ю
  4. К концу 10-го прохода i = 10. Условие не будет выполнено, так как результат сравнения не является истиной.

Текущая форма for in do echo позволяет самостоятельно создавать бесконечные циклы:

Циклы в Bash

Выйти из бесконечного loop-компонента, а также из «обычного» for разрешено преждевременно. Для этого разработчик должен использовать команду break:

Циклы в Bash

Применять break на практике не рекомендуется. Обычно данный оператор используется тогда, когда приложение ввиду тех или иных ошибок создало бесконечную петлю.

С постусловием

Циклы For в Bash уже изучены, но есть и другие варианты ветвлений. Они используются для более сложных операций. Второй вариант петли – это loop с постусловием.

Его суть отличается от for I in do. Такой цикл будет повторяться до тех пор, пока выполняется заданное в объявлении конструкции условие. Никаких счетчиков тут нет. Конструкция заменяет if в некоторых языках программирования.

Синтаксическая форма записи loop с while:

Циклы в Bash

Работает конструкция так:

  1. Сначала выполняется проверка на правильность условия.
  2. Если результат – логическая истина, то произойдет обработка предложенных команд. После этого система снова проверит «правильность» условия.
  3. Приложение работает до тех пор, пока результат вычислений – true. Как только итогом станет логическая ложь (false), система передаст управление следующему после петли оператору.
Циклы в Bash

Выше – наглядный пример с while. Сначала здесь устанавливается значение счетчика, равное 1. Далее в условии оно будет сравниваться с 5. Пока счетчик менее указанного «параметра», реализовываются команды, прописанные в блоке do-done then echo. В соответствующем блоке требуется на единицу с каждой итерацией увеличивать значение счетчика. Команда тоже реализовывается в полной мере.

Через while допускается считывание нескольких строк из стандартного ввода:

Циклы в Bash

Приложение будет требовать новые строки до тех пор, пока не передается символ конца файла. Для этого используется сочетание клавиш Ctrl + D. Бесконечные петли через while организовать проще, чем посредством for:

Циклы в Bash

Выше – наглядный пример соответствующей операции.

Циклы с until

Циклы for и while встречаются в разработке достаточно часто. Есть еще один вариант «петлей» – это фрагмент с предусловием. Он напоминает while. Отличается от «предшественника» только принципами работы заданного условия.

Чтобы написанные в скрипте команды выполнялись, результат расчетов написанного выражения должен быть ложным (fi false). Циклы until – полная противоположность while. Синтаксическая форма записи:

Циклы в Bash

А вот наглядный пример со счетчиком:

Циклы в Bash
Циклы в Bash

Здесь сначала задается значение счетчика, равное 1. Каждая итерация увеличит соответствующий параметр на единицу. Как только значение счетчика оказывается больше 10, loop прекращает работу.

Для выхода из цикла в until и while допускается использование дополнительных команд. Они позволяют «досрочно» завершить работу с фрагментом кода и остановить программный код.

Принцип работы break

Оператор break может быть использован не только с циклами с пост- и предусловием, но и в for. Он отвечает за завершение текущей петли, после чего передает управление приложением команде, написанной после завершенной. Часто применяется для того, чтобы завершить цикл при выполнении конкретного условия.

Циклы в Bash

Здесь программа прекращает работать, когда имя файла станет Lithium.

Использование continue

При работе с for sh и другими циклами может потребоваться реализация такого оператора как continue. Он работает подобно break. Отвечает за завершение текущей итерации, после чего передает управление программным обеспечением следующей итерации в пределах цикла.

Циклы в Bash

Вот – наглядный пример перебора заданного числового диапазона. Оператор continue вернет выполнение к началу цикла тогда, когда текущий повторяемый компонент будет равен 2. После этого программа продолжит следующий проход через имеющийся фрагмент кода.

Как быстрее освоить тему

Циклы for в Bash – это не так сложно, как может показаться. Чтобы лучше изучить особенности применения петель в разработке, а также научить писать сложные приложения с нуля, рекомендуется обратить внимание на дистанционные онлайн-курсы. Они гарантируют:

  • разнообразие направлений для обучения и возможность освоить любое IT-направление;
  • совмещение с работой, семьей и другими делами – весь процесс организован через интернет;
  • записи вебинаров и уроков – пропущенные занятие удастся посмотреть в любое время;
  • сжатые сроки обучения – курсы рассчитаны на срок до 12 месяцев;
  • постоянное кураторство опытными специалистами в выбранной области и помощь в формировании первого портфолио;
  • интересные домашние задания и практические задачи.

При успешном завершении курса пользователю будет вручен электронный сертификат установленного образца. Он подтвердит приобретенные знания, навыки и умения.