VPS
3 июня, 2020
4мин. чтения
Содержание
VPS
3 июня, 2020
4мин. чтения
Цикл for — один из основных циклов в разных языках программирования. В этом руководстве, как уже понятно из названия — “Bash: Цикл For” — мы объясним, как он используется в языке программирования bash. Так что приготовьтесь добавить новый инструмент в ваш арсенал разработчика!
Цикл for — оператор итерации. Это значит, что он позволяет выполнять код повторно. Допустим, вы хотите запустить одну и ту же инструкцию 5 раз. Вместо того, чтобы писать пять отдельных кусков кода, вы можете просто написать синтаксис цикла for один раз. Давайте разбираться, как работает цикл for более детально?
По сути, самый простой синтаксис цикла 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
Давайте разберём каждый элемент:
Вы можете написать код по-разному в зависимости от версии 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
Вы можете обновить синтаксис для выполнения нескольких операций. Помните, что перед тем, как что-либо делать, вам необходимо зайти на свой VPS-сервер. Если вы сомневаетесь, как это сделать, вам поможет это руководство.
Между тем, если у вас возникли проблемы с bash, рекомендуем прочесть общее руководство по bash (англ). Помните, что функции bash должны быть в файле .sh. Чтобы создать его, запустите следующую команду в командной строке:
vim NameOfFile.sh
Эта команда создаст файл .sh и откроет его в редакторе VIM. Опять-таки более детально это описано в вышеупомянутом руководстве по базовым функциям bash.
После активации этот цикл будет выполнять код до тех пор, пока вы не остановите его, нажав Control + C. В этом случае термин «Hello World» будет появляться снова и снова сам по себе.
#!/bin/bash for (( ; ; )) do echo "Hello World!" done
Цикл состоит из трёх записывающих выражений — инициализатора, или начального значения переменной (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
Оператор 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.
Цикл позволяет остановить операцию, если она соответствует заявленным условиям. При этом за ней может следовать другая инструкция. Вот синтаксис:
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 имеет довольно высокий порог вхождения, но мы уверенны, что чтение этой вступительной статьи — хорошее начало. Всё остальное — дело практики. Удачи!