Поиск по сайту:

Как использовать 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. Мы надеемся, что вы нашли это познавательным. Не стесняйтесь высказать свое мнение.