Как использовать Bash For Loop в Linux: руководство для начинающих
В языках программирования Циклы являются важными компонентами и используются, когда вы хотите повторять код снова и снова, пока не будет выполнено определенное условие.
В сценариях Bash циклы играют практически ту же роль и используются для автоматизации повторяющихся задач, как и в языках программирования.
В сценариях Bash существует три типа циклов: цикл for, цикл while и до тех пор, пока цикл. Эти три используются для перебора списка значений и выполнения заданного набора команд.
В этом руководстве мы сосредоточимся на цикле For Bash в Linux.
Синтаксис цикла Bash For
Как упоминалось ранее, цикл for перебирает диапазон значений и выполняет набор команд Linux.
Цикл For имеет следующий синтаксис:
for variable_name in value1 value2 value3 .. n
do
command1
command2
commandn
done
Давайте теперь проверим несколько примеров использования цикла bash for.
Пример цикла Bash For
В своей простейшей форме цикл for имеет следующий базовый формат. В этом примере переменная n
перебирает группу числовых значений, заключенных в фигурные скобки, и выводит их значения на стандартный вывод.
for n in {1 2 3 4 5 6 7};
do
echo $n
done
Цикл Bash For с диапазонами
В предыдущих примерах мы явно перечисляли значения, которые будут перебираться в цикле for, и это прекрасно работает. Однако вы можете только представить, насколько громоздкой и трудоемкой была бы задача, если бы вам пришлось перебрать, например, сотню значений. Это заставит вас ввести все значения от 1 до 100.
Чтобы решить эту проблему, укажите диапазон. Для этого укажите число начала и окончания, разделенное двумя точками.
В этом примере 1 — это первое значение, а 7 — последнее значение в диапазоне.
#!/bin/bash
for n in {1..7};
do
echo $n
done
После выполнения сценария оболочки отображаются все значения в диапазоне, аналогично тому, что было в простых циклах.
Кроме того, мы можем включить значение в конец диапазона, что приведет к тому, что цикл for будет перебирать значения поэтапно.
Следующий сценарий bash печатает значения от 1 до 7 с двумя последовательными шагами между значениями, начиная с первого значения.
#!/bin/bash
for n in {1..7..2};
do
echo $n
done
Из приведенного выше примера видно, что цикл увеличил значения внутри фигурных скобок на 2 значения.
Циклы Bash For с массивами
Вы также можете легко перебирать значения, определенные в массиве, используя цикл for. В следующем примере цикл for перебирает все значения внутри массива Fruits и выводит их на стандартный вывод.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[@]};
do
echo $n
done
Оператор @
обращается ко всем элементам или нацелен на них. Это позволяет перебирать все элементы один за другим.
Кроме того, вы можете получить доступ к одному элементу, указав его положение в массиве.
Например, чтобы получить доступ к элементу «mango», замените оператор @
позицией элемента в массиве (первый элемент начинается с 0, поэтому в этом случае «манго» будет обозначаться цифрой 2).
Вот как выглядит цикл for.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[2]};
do
echo $n
done
Стиль Bash C для цикла
Вы можете использовать переменные внутри циклов для перебора диапазона элементов. Именно здесь на помощь приходят циклы for в стиле C. Следующий пример иллюстрирует цикл for в стиле C, который выводит список числовых значений от 1 до 7.
#!/bin/bash
n=7
for (( n=1 ; n<=$n ; n++ ));
do
echo $n
done
Циклы For в стиле Bash C с условными операторами
Вы можете включать условные операторы внутри циклов for в стиле C. В следующем примере мы включили оператор if-else, который проверяет и выводит четные и нечетные числа от 1 до 7.
#!/bin/bash
for (( n=1; n<=7; n++ ))
do
# Check if the number is even or not
if (( $n%2==0 ))
then
echo "$n is even"
else
echo "$n is odd"
fi
done
Используйте оператор Continue с циклом Bash For
Оператор «continue» – это встроенная команда, управляющая выполнением сценария. Помимо сценариев bash, он также используется в таких языках программирования, как Python и Java.
оператор continue останавливает текущую итерацию внутри цикла при выполнении определенного условия, а затем возобновляет итерацию.
Рассмотрим показанный ниже цикл for.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
continue
fi
echo $n
done
Вот что делает код:
- Строка 2: отмечает начало цикла for и выполняет итерацию переменной n от 1 до 10.
- Строка 4: проверяет значение n, и если переменная равна 6, сценарий отображает сообщение на стандартный вывод и перезапускает цикл на следующей итерации в строке 2.
- Строка 9: значения выводятся на экран только в том случае, если условие в строке 4 является ложным.
Ниже приведен ожидаемый результат после запуска сценария.
Используйте оператор Break с циклом Bash For
Оператор break, как следует из названия, останавливает или завершает итерацию при выполнении условия.
Рассмотрим приведенный ниже цикл For.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
break
fi
echo $n
done
echo "All done"
Вот что делает код:
- Строка 2: отмечает начало цикла for и выполняет итерацию переменной n от 1 до 10.
- Строка 4: проверяет значение n, и если переменная равна 6, сценарий отображает сообщение на стандартный вывод и останавливает итерацию.
- Строка 9: числа выводятся на экран только в том случае, если условие в строке 4 является ложным.
Из выходных данных видно, что цикл останавливается, как только переменная соответствует условию цикла.
Заключение
Это был урок по циклам For Bash. Мы надеемся, что вы нашли это познавательным. Не стесняйтесь высказать свое мнение.