Это одна из основных разновидностей циклов. И она значительно отличается от аналога в языке C.
На каждом проходе цикла, переменная-аргумент цикла arg последовательно, одно за другим, принимает значения из списка list.
Элементы списка могут включать в себя шаблонные символы.
Есл ключевое слово do находится в одной строке со словом for, то после списка аргументов (перед do) необходимо ставить точку с запятой.
Пример 10-1. Простой цикл for
Каждый из элементов [списка] может содержать несколько аргументов. Это бывает полезным при обработке групп параметров. В этом случае, для принудительного разбора каждого из аргументов в списке, необходимо использовать инструкцию set (см. Пример 11-13).
Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка
В качестве списка, в цикле for, можно использовать переменную.
Пример 10-3. Fileinfo: обработка списка файлов, находящегося в переменной
В [списке] цикла for могут быть использованы имена файлов, которые в свою очередь могут содержать символы-шаблоны.
Пример 10-4. Обработка списка файлов в цикле for
Пример 10-5. Цикл for без списка аргументов
При создании списка аргументов, в цикле for допускается пользоваться подстановкой команд. См. Пример 12-39, Пример 10-10 и Пример 12-33.
Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд
Более сложный пример использования подстановки команд при создании списка аргументов цикла.
Пример 10-7. grep для бинарных файлов
Пример 10-8. Список всех пользователей системы
И заключительный пример использования подстановки команд при создании [списка].
Пример 10-9. Проверка авторства всех бинарных файлов в текущем каталоге
Результат работы цикла for может передаваться другим командам по конвейеру.
Пример 10-10. Список символических ссылок в каталоге
Вывод цикла может быть перенаправлен со stdout в файл, ниже приводится немного модифицированный вариант предыдущего примера, демонстрирующий эту возможность.
Пример 10-11. Список символических ссылок в каталоге, сохраняемый в файле
Пример 10-12. C-подобный синтаксис оператора цикла for
А сейчас пример сценария, который может найти «реальное» применение.
Пример 10-13. Работа с командой efax в пакетном режиме
Оператор while проверяет условие перед началом каждой итерации и если условие истинно (если код возврата равен 0 ), то управление передается в тело цикла. В отличие от циклов for, циклы while используются в тех случаях, когда количество итераций заранее не известно.
Обратите внимание: в отдельных случаях, таких как использование конструкции getopts совместно с оператором while, синтаксис несколько отличается от приводимого здесь.
Пример 10-14. Простой цикл while
Пример 10-15. Другой пример цикла while
Оператор while может иметь несколько условий. Но только последнее из них определяет возможность продолжения цикла. В этом случае синтаксис оператора цикла должен быть несколько иным.
Пример 10-16. Цикл while с несколькими условиями
Как и в случае с for, цикл while может быть записан в C-подобной нотации, с использованием двойных круглых скобок (см. так же Пример 9-28).
Пример 10-17. C-подобный синтаксис оформления цикла while
Стандартное устройство ввода stdin, для цикла while, можно перенаправить на файл с помощью команды перенаправления в конце цикла.
Оператор цикла until проверяет условие в начале каждой итерации, но в отличие от while итерация возможна только в том случае, если условие ложно.
Обратите внимание: оператор until проверяет условие завершения цикла ПЕРЕД очередной итерацией, а не после, как это принято в некоторых языках программирования.
Циклы — одна из фундаментальных концепций языков программирования. Циклы удобны, когда вы хотите запускать серию команд снова и снова, пока не будет достигнуто определенное условие.
В этом руководстве мы рассмотрим основы циклов for в Bash. Мы также покажем вам, как использовать операторы break и continue чтобы изменить ход цикла.
Стандартный for цикл в Bash
Цикл for выполняет итерацию по списку элементов и выполняет заданный набор команд.
Цикл for Bash имеет следующую форму:
Список может быть серией строк, разделенных пробелами, диапазоном чисел, выводом команды, массивом и т. Д.
Оберните струны
В приведенном ниже примере цикл будет перебирать каждый элемент в списке строк, и переменный element будет установлен на текущий элемент:
Цикл выдаст следующий результат:
Цикл по диапазону чисел
Вы можете использовать выражение последовательности, чтобы указать диапазон чисел или символов, задав начальную и конечную точки диапазона. Выражение последовательности принимает следующую форму:
Вот пример цикла, который перебирает все числа от 0 до 3:
Начиная с Bash 4, также можно указывать приращение при использовании диапазонов. Выражение принимает следующий вид:
Вот пример, показывающий, как увеличить на 5:
Перебирать элементы массива
Вы также можете использовать цикл for для перебора массива элементов.
В приведенном ниже примере мы определяем массив с именем BOOKS и перебираем каждый элемент массива.
Цикл for в Bash в стиле C
Синтаксис цикла for стиле C имеет следующий вид:
Цикл повторится 1001 раз и выдаст следующий результат:
Операторы break и continue
Операторы break и continue могут использоваться для управления выполнением цикла for.
Оператор break
Оператор break завершает текущий цикл и передает управление программой оператору, следующему за завершенным оператором. Обычно он используется для завершения цикла при выполнении определенного условия.
В следующем примере мы используем оператор if для прекращения выполнения цикла, когда текущий повторяемый элемент становится равным «Lithium».
Оператор continue
Оператор continue завершает текущую итерацию цикла и передает управление программой следующей итерации цикла.
В следующем примере мы перебираем диапазон чисел. Когда текущий повторяемый элемент равен ‘2’, оператор continue заставит выполнение вернуться к началу цикла и продолжить следующую итерацию:
Примеров циклов for в Bash
Переименование файлов с пробелами в имени файла
В следующем примере показано, как переименовать все файлы в текущем каталоге с пробелом в его именах, заменив пробел на подчеркивание:
Давайте разберем код построчно:
Изменение расширения файла
Давайте проанализируем код построчно:
Выводы
Цикл for Bash используется для повторного выполнения заданного набора команд определенное количество раз.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Цикл for — один из основных циклов в разных языках программирования. В этом руководстве, как уже понятно из названия — “Bash: Цикл For” — мы объясним, как он используется в языке программирования bash. Так что приготовьтесь добавить новый инструмент в ваш арсенал разработчика!
Цикл for — оператор итерации. Это значит, что он позволяет выполнять код повторно. Допустим, вы хотите запустить одну и ту же инструкцию 5 раз. Вместо того, чтобы писать пять отдельных кусков кода, вы можете просто написать синтаксис цикла for один раз. Давайте разбираться, как работает цикл for более детально?
Синтаксис Цикла For в Bash
По сути, самый простой синтаксис цикла for перебирает список простых значений. Обычно это выглядит так:
На деле этот синтаксис будет выглядеть следующим образом:
Выполнение файла bash приведёт к появлению следующего текста:
Давайте разберём каждый элемент:
Вы можете написать код по-разному в зависимости от версии bash, которую вы используете.
Bash версии 4.0+ позволяет использовать синтаксис .
Результат будет выглядеть следующим образом:
Другие распространённые варианты синтаксиса:
Цикл For в Bash: Примеры
Вы можете обновить синтаксис для выполнения нескольких операций. Помните, что перед тем, как что-либо делать, вам необходимо зайти на свой VPS-сервер. Если вы сомневаетесь, как это сделать, вам поможет это руководство.
Используем Bash-цикл For для Создания Бесконечного Цикла
После активации этот цикл будет выполнять код до тех пор, пока вы не остановите его, нажав Control + C. В этом случае термин «Hello World» будет появляться снова и снова сам по себе.
Цикл For с Тремя Выражениями в Bash
Цикл состоит из трёх записывающих выражений — инициализатора, или начального значения переменной ( EXP1 ), условия окончания цикла ( EXP2 ) и выражения, вычисляемого после каждой итерации ( EXP3 ). Иногда люди называют его циклом в стиле C из-за близкого сходства в структуре кода с этим языком программирования. Синтаксис цикла выглядит следующим образом:
А вот рабочий пример, который вы можете попробовать повторить сами:
Управление Циклами Bash: Цикл For с Пропуском и Продолжением
Оператор continue пропускает одну итерацию цикла и переходит к следующей. Вот как выглядеть синтаксис такой операции:
Следуя синтаксису, мы можем сказать bash пропустить выполнение одной итерации, а затем продолжить цикл:
Управление Циклами Bash: Цикл For с Перерывом
Цикл позволяет остановить операцию, если она соответствует заявленным условиям. При этом за ней может следовать другая инструкция. Вот синтаксис:
При использовании этой функции наш код будет выглядеть так:
Оператор сообщает циклу прервать операцию, когда условие выполнено (термин Джакарта найден). Затем он выполнит второй код, а именно ввод текста “ Да, это всё! ” (“Yes, that’s all!”).
Краткое Изложение
Цикл for отлично подходит для автоматизации повторяющихся задач в Bash. Помимо основных примеров, приведённых выше, существует ещё множество вариантов применения этого цикла. Например, с его помощью вы можете отслеживать файлы и выполнять ещё множество других задач.
Всё, что вам нужно сделать, это разобраться в синтаксисе. Цикл for имеет довольно высокий порог вхождения, но мы уверенны, что чтение этой вступительной статьи — хорошее начало. Всё остальное — дело практики. Удачи!
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Возможность зацикливания – очень мощная функция сценариев bash. Циклы имеют множество вариантов использования.
В этой статье вы изучите три разные структуры цикла bash. Вы также узнаете, как использовать циклы для обхода элементов массива.
Кроме того, вы узнаете, как использовать операторы break и continue для управления циклами, и, наконец, вы узнаете, как создавать бесконечные циклы.
Для циклов в Bash
Циклы For – это один из трех различных типов структур цикла, которые вы можете использовать в bash. Есть два разных стиля написания цикла for.
C-стиль для циклов в Bash
Если вы знакомы с языком программирования C или C ++, то вы узнаете следующий синтаксис цикла for:
Используя вышеупомянутый синтаксис в стиле C, следующий цикл for распечатает «Привет друг» десять раз:
Цикл for сначала инициализирует целочисленную переменную i нулевым значением, затем проверяет условие (i Читать Как проверить детали видеокарты в Linux
Например, в следующем сценарии 3×10.sh используется цикл while, который выводит первые десять чисел, кратных числу три:
Вот результат выполнения вышеуказанного скрипта:
До циклов в Bash
Если вы работаете с C/C ++, возможно, вы ищете цикл do-while, но его нет в bash.
В bash существует еще один вид цикла. Синтаксис цикла while совпадает с синтаксисом цикла while:
Ключевое различие между циклом until и циклом while заключается в условии проверки. Цикл while будет выполняться до тех пор, пока выполняется условие проверки; с другой стороны, цикл до тех пор, пока условие проверки не будет ложным!
Например, вы можете легко создать сценарий 3×10.sh с циклом «пока» вместо цикла «until»; уловка здесь в том, чтобы отрицать условие теста:
Подробнее о циклах в сценариях bash
Теперь, когда вы знакомы с циклами в сценариях bash
Распечатать содержимое массива в bash
Если вы с самого начала следите за этой серией статей, вы должны быть знакомы с массивами в bash.
Циклы For часто являются наиболее популярным выбором, когда дело доходит до перебора элементов массива.
Например, следующий сценарий prime.sh выполняет итерацию и распечатывает каждый элемент в массиве простых чисел:
Это результат работы скрипта prime.sh:
Использование Break и Continue в циклах bash
Иногда вы можете захотеть преждевременно выйти из цикла или пропустить итерацию цикла. Для этого вы можете использовать операторы break и continue.
Оператор break завершает выполнение цикла и переключает управление программой на следующую команду или инструкцию, следующую за циклом.
Например, следующий цикл будет печатать только числа от одного до трех:
Вы также можете использовать оператор continue, чтобы пропустить итерацию цикла. Цикл продолжается и переходит к следующей итерации, но команды после операторов continue пропускаются в этой частичной итерации.
Например, следующий скрипт odd.sh будет печатать только нечетные числа от одного до десяти, поскольку он пропускает все четные числа:
Вот результат, который печатает нечетные числа:
Бесконечные циклы в bash
Бесконечный цикл – это цикл, который продолжается вечно; это происходит, когда условие проверки цикла всегда истинно.
В большинстве случаев бесконечные циклы являются результатом человеческой логической ошибки.
Например, тот, кто может захотеть создать цикл, который печатает числа от 1 до 10 в порядке убывания, может по ошибке создать следующий бесконечный цикл:
В некоторых случаях вы можете намеренно создать бесконечные циклы, чтобы дождаться выполнения внешнего условия в системе. Вы можете легко создать бесконечный цикл for следующим образом:
Если вместо этого вы хотите создать бесконечный цикл while, вы можете создать его следующим образом:
На этом мы подошли к концу нашей статьи из серии Bash для начинающих. Надеюсь, вам понравилось делать цикл в bash!
Следите за новостями на следующей неделе, так как вы узнаете, как повторно использовать код в сценариях bash, создавая функции.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
С помощью циклов вы можете очень сильно сократить количество строк кода, которые необходимо написать для однотипных операций. В этой статье мы рассмотрим что такое циклы Bash, как их создавать и использовать.
Циклы Bash
Как я уже сказал, циклы позволяют выполнять один и тот же участок кода необходимое количество раз. В большинстве языков программирования существует несколько типов циклов. Большинство из них поддерживаются оболочкой Bash. Мы рассмотрим их все в сегодняшней статье, но сначала поговорим какими они бывают:
Циклы Bash, это очень полезная вещь и разобраться с ними будет несложно. Bash позволяет использовать циклы как в скриптах, так и непосредственно в командной оболочке. Дальше мы рассмотрим каждый из этих видов циклов.
Цикл for
Цикл for bash применяется очень часто из-за своей специфики. Его проще всего использовать когда вы знаете сколько раз нужно повторить операцию или вам нужно просто обработать по очереди все элементы массива и вы не хотите контролировать количество повторений.
Цикл for имеет несколько синтаксисов и может вести себя по разному. Для перебора элементов списка удобно использовать такой синтаксис:
for переменная in список do команда1 команда2 done
Каждый цикл for независимо от типа начинается с ключевого слова for. Дальше все зависит от типа. В этом случае после for указывается имя переменной, в которую будет сохранен каждый элемент списка, затем идет ключевое слово in и сам список. Команды, которые нужно выполнять в цикле размещаются между словами do и done.
Проверим все на практике и напишем небольшой скрипт, который будет выводить номера от 1 до 5:
Дайте скрипту права на выполнение и запустите его:
chmod +x for1.sh ./for1.sh
Вы увидите, что все выполняется так, как и предполагалось. Программа выведет цифры от 1 до 5, которые мы перечислили в массиве. Вы можете передать циклу любой массив, например, вывод какой-либо другой команды:
Как вы уже поняли, этот цикл выводит список всех, подключенных к системе сетевых интерфейсов. Но в цикле вы можете не только их выводить, но и выполнять какие-либо действия.
Следующий тип цикла for похож на его реализацию в языках программирования Си и С++. Он состоит из трех частей, инициализатора счетчика, условия продолжения выполнения и действия над счетчиком. Вот синтаксис:
for (( счетчик = 1 ; счетчик 10 ; счетчик ++ )) do команда1 команда2 done
Этот цикл немного сложнее, но он позволяет сделать больше. С помощью такого цикла можно не только перебирать массивы, но и сделать необходимое количество повторений. Рассмотрим пример:
Если необходимо, вы можете выйти из цикла преждевременно. Но так делать не рекомендуется. Для выхода используйте команду break:
Со циклами for мы завершили, теперь вы знаете как они выглядят и что с ними делать. Дальше мы рассмотрим циклы while и until. Они намного проще и более универсальны.
Цикл While
Суть цикла While в том, что он будет повторяться до тех пор, пока будет выполняться условие, указанное в объявлении цикла. Здесь нет никаких счетчиков и если они вам нужны, то организовывать их вам придется самим. Bash цикл while имеет такой синтаксис:
while [ условие ] do команда1 команда2 команда3 done
Это работает так: сначала выполняется проверка на правильность условия, если true, выполняется набор команд, затем снова выполняется проверка, и так пока условие не вернет отрицательный результат. Это нам тоже нужно сделать вручную. Рассмотрим пример:
Здесь сначала мы устанавливаем значение счетчика в единицу, затем, в условии сравниваем его с 5, пока счетчик меньше пяти будут выполняться команды из блока do-done. Но еще в этом блоке нам нужно увеличивать значение счетчика на единицу, что мы и делаем.
Также с помощью while мы можем прочитать несколько строк из стандартного ввода:
Программа будет запрашивать новые строки пока вы не передадите ей символ конца файла с помощью сочетания клавиш Ctrl+D. Бесконечный цикл while bash с помощью while еще проще организовать:
while : do echo «Бесконечный цикл bash, для выхода нажмите Ctrl+C» done
Цикл until
Нам осталось рассмотреть последний цикл. Это цикл until. Он очень похож на while и отличается от него только работой условия. Если в первом нужно чтобы условие всегда было истинным, то здесь все наоборот. Цикл будет выполняться пока условие неверно. Синтаксис:
until [ условие ] do команда1 команда2 done
Думаю после рассмотрения реального примера со счетчиком будет намного понятнее как это работает:
Мы задаем значение счетчика 1 и увеличиваем его на единицу при каждом проходе. Как только условие счетчик больше 10 выполнится, сразу цикл будет остановлен. В циклах while и until тоже можно использовать команды break и continue для выхода из цикла и завершения текущего прохода, но мы не будем это очень подробно рассматривать.
Выводы
В этой статье мы рассмотрели циклы Bash, как с ними работать и в каких ситуациях их можно использовать. Циклы могут стать отличным и незаменимым инструментом при создании сложных скриптов администрирования системы. Если у вас остались вопросы, спрашивайте в комментариях!