Bash: Цикл For c Описанием и Примерами
содержание
VPS
3 июня, 2020
4мин. чтения
Цикл for — один из основных циклов в разных языках программирования. В этом руководстве, как уже понятно из названия — “Bash: Цикл For” — мы объясним, как он используется в языке программирования bash. Так что приготовьтесь добавить новый инструмент в ваш арсенал разработчика!
Цикл for — оператор итерации. Это значит, что он позволяет выполнять код повторно. Допустим, вы хотите запустить одну и ту же инструкцию 5 раз. Вместо того, чтобы писать пять отдельных кусков кода, вы можете просто написать синтаксис цикла for один раз. Давайте разбираться, как работает цикл for более детально?
Синтаксис Цикла For в Bash
По сути, самый простой синтаксис цикла for перебирает список простых значений. Обычно это выглядит так:
for VARIABLE in 1 2 3 4 5 .. N Perform the below command: command1 command2 commandN done
На деле этот синтаксис будет выглядеть следующим образом:
#!/bin/bash for i in 1 2 3 4 5 do echo "Hello $i" done
Выполнение файла bash приведёт к появлению следующего текста:
Hello 1 Hello 2 Hello 3 Hello 4 Hello 5
Давайте разберём каждый элемент:
- #!/bin/bash — показывает, что код является скриптом bash
- i — это плейсхолдер для переменной. Между тем, $i — это индивидуальное значение переменной. Вы также можете записать это как c/$c или любым другим именем
- in — разделяет переменную и элементы, что следуют за ней
- 1 2 3 4 5 — это пример элементов, над которыми вы хотите выполнить инструкцию
- do — это ключевое слово, которое запускает циклы. Затем оно выполнит инструкцию энное количество раз, при этом n — это общее количество элементов. Здесь значение n равно 5
- echo “Hello: $i” — код, который мы будем повторять энное количество раз. Помните, что кавычки превращают что-либо внутри них в одну переменную.
- done — останавливает цикл
Вы можете написать код по-разному в зависимости от версии bash, которую вы используете.
Bash версии 3.0+ позволяет сокращённо задавать диапазон с помощью “. .”.
#!/bin/bash for i in {1. .5} do echo "Hai $i" done
Bash версии 4.0+ позволяет использовать синтаксис {START. .END. .INCREMENT}.
#!/bin/bash for i in {0. .8. .2} do echo "Hai $i" done
Результат будет выглядеть следующим образом:
Hai 0 Hai 2 Hai 4 Hai 6 Hai 8
Другие распространённые варианты синтаксиса:
for VARIABLE in file1 file2 file3 do command1 on $VARIABLE command2 commandN done
Или так:
for OUTPUT in $(Linux-Or-Unix-Command-Here) do command1 on $OUTPUT command2 on $OUTPUT commandN done
Цикл For в Bash: Примеры
Вы можете обновить синтаксис для выполнения нескольких операций. Помните, что перед тем, как что-либо делать, вам необходимо зайти на свой VPS-сервер. Если вы сомневаетесь, как это сделать, вам поможет это руководство.
Между тем, если у вас возникли проблемы с bash, рекомендуем прочесть общее руководство по bash (англ). Помните, что функции bash должны быть в файле .sh. Чтобы создать его, запустите следующую команду в командной строке:
vim NameOfFile.sh
Эта команда создаст файл .sh и откроет его в редакторе VIM. Опять-таки более детально это описано в вышеупомянутом руководстве по базовым функциям bash.
Используем Bash-цикл For для Создания Бесконечного Цикла
После активации этот цикл будет выполнять код до тех пор, пока вы не остановите его, нажав Control + C. В этом случае термин «Hello World» будет появляться снова и снова сам по себе.
#!/bin/bash for (( ; ; )) do echo "Hello World!" done
Цикл For с Тремя Выражениями в Bash
Цикл состоит из трёх записывающих выражений — инициализатора, или начального значения переменной (EXP1), условия окончания цикла (EXP2) и выражения, вычисляемого после каждой итерации (EXP3). Иногда люди называют его циклом в стиле C из-за близкого сходства в структуре кода с этим языком программирования. Синтаксис цикла выглядит следующим образом:
for (( EXP1; EXP2; EXP3 )) do command1 command2 command3 done
А вот рабочий пример, который вы можете попробовать повторить сами:
#!/bin/bash for (( c=1; c<=5; c++ )) do echo "Hai $c" done
Начальное значение, указанное в коде, равно 1. Цикл будет выполняться, до тех пор пока условие в EXP2 истинно (true), в данном случае, это означает, что оно не должно быть больше 5. Знак, ++, в свою очередь, означает инкремент, или увеличение на 1. Цикл будет повторяться один за другим, начиная с начального значения. Результат:
Hai 1 Hai 2 Hai 3 Hai 4 Hai 5
Управление Циклами Bash: Цикл For с Пропуском и Продолжением
Оператор continue пропускает одну итерацию цикла и переходит к следующей. Вот как выглядеть синтаксис такой операции:
for I in 1 2 3 4 5
do if [condition] then continue #Перейти к следующей итерации I в цикле и пропустить инструкцию 3 fi statement
done
Следуя синтаксису, мы можем сказать bash пропустить выполнение одной итерации, а затем продолжить цикл:
for i in {1..5} do if [[ "$i" == '4' ]] then continue fi echo "Hai $i4" done
Вывод:
Hai 1 Hai 2 Hai 3 Hai 5
Поскольку значение 4 соответствовало инструкции continue, цикл не выполнил код и перешел к следующему значению — 5.
Управление Циклами Bash: Цикл For с Перерывом
Цикл позволяет остановить операцию, если она соответствует заявленным условиям. При этом за ней может следовать другая инструкция. Вот синтаксис:
for I in 1 2 3 4 5 do if [condition] then break fi statement done
При использовании этой функции наш код будет выглядеть так:
for city in Manila Bangkok Jakarta Kuala Lumpur do if [[ "$city" == 'Jakarta' ]]; then break fi echo "city: $city" done echo 'Yes, that’s all!'
И, наконец, вывод:
city: Manila city: Bangkok Yes, that’s all!
Оператор сообщает циклу прервать операцию, когда условие выполнено (термин Джакарта найден). Затем он выполнит второй код, а именно ввод текста “Да, это всё!” (“Yes, that’s all!”).
Краткое Изложение
Цикл for отлично подходит для автоматизации повторяющихся задач в Bash. Помимо основных примеров, приведённых выше, существует ещё множество вариантов применения этого цикла. Например, с его помощью вы можете отслеживать файлы и выполнять ещё множество других задач.
Всё, что вам нужно сделать, это разобраться в синтаксисе. Цикл for имеет довольно высокий порог вхождения, но мы уверенны, что чтение этой вступительной статьи — хорошее начало. Всё остальное — дело практики. Удачи!