5 полезных примеров цикла Bash for
Представьте, что у вас есть каталог, заполненный тысячами файлов, и вас попросили обработать эти файлы один за другим. Звучит довольно утомительно, не так ли? Ну нет, если вы используете циклы For в сценарии Bash. Цикл for в скрипте bash — это волшебный инструмент, который может помочь вам автоматизировать любую повторяющуюся задачу, эффективно обрабатывая эти файлы без особых усилий. В этой статье мы обсудим циклы for в bash с некоторыми практическими примерами, чтобы сделать автоматизацию детской игрой.
Что такое цикл for в скрипте Bash
Цикл for — это управляющая структура, которая используется для выполнения повторяющихся задач или выполнения набора команд определенное количество раз. С помощью цикла for вы можете перебирать числа, списки, файлы или даже каталоги.
Bash For Loop: синтаксис стиля POSIX
Синтаксис стиля POSIX (Portable Operating System Interface) можно использовать с совместимыми с POSIX оболочками, такими как bash, и его можно использовать для перебора списка файлов, любой последовательности или даже вывода других команд. Вот синтаксис цикла for в сценарии bash:
для
сделанный
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
В приведенном выше синтаксисе все означает следующее:
это определяемая пользователем переменная, которая содержит каждый элемент из . относится к списку элементов, по которым цикл for необходим для итерации. Это может быть список чисел, строк, вывод команды и т.д. - Ключевое слово do означает начало цикла for.
содержит команды или операторы, которые будут выполняться для каждой итерации. - Ключевое слово done означает конец цикла for.
Давайте теперь посмотрим на несколько практических примеров, основанных на цикле for в стиле POSIX:
Пример 1: Цикл по заданному диапазону
#!/bin/bash # Вывести числа от 1 до 5 для i in $(seq 1 5); сделать эхо $ я сделал
В приведенном выше фрагменте часть $(seq 1 5) используется для создания списка целых чисел от 1 до 5. Затем он будет перебирать список один за другим, а затем каждое значение будет напечатано на новой строке.
Пример 2: Цикл по массиву
#!/bin/bash fruit=(“Яблоко” “Банан” “Апельсин” “Виноград”) для фруктов в “${fruits[@]}”; выполнить echo “Фрукты: $fruit”
Массив — это структура данных, которая используется для хранения нескольких данных разных типов. В приведенном выше фрагменте:
- Строка fruit=(“Apple” “Banana” “Orange” “Grapes”) используется для объявления массива, содержащего четыре разных названия фруктов.
- Строка «для фруктов в «${фрукты[@]}”; do” устанавливает цикл For. Он указывает переменную “fruit” для хранения текущего значения элемента и “${fruits[@]}» в качестве массива для повторения. Знак «@» внутри «${фрукты[@]}“, представляет все элементы массива.
- Строка «echo «Fruit: $fruit»» печатает название каждого фрукта на новой строке вместе со словом «Fruit» во время каждой итерации.
- Наконец, последняя строка «done» означает конец цикла for.
Вот результат, который мы получим от приведенных выше команд:
Пример 3: Цикл с подстановкой команд
#!/bin/bash для файла в $(ls); сделать эхо “Файл: $file” сделано
Подстановка команд работает следующим образом: сначала выполняется команда, а затем цикл for повторяет весь вывод команды. Команда для итерации помещается внутри «$()». В приведенном выше фрагменте:
- В строке для файла в $(ls); сделать, часть $(ls) выполняет команду ‘ls’, а ее вывод (список файлов в текущем каталоге) используется в качестве входных данных для цикла. Цикл будет перебирать каждое имя файла, найденное в выходных данных.
- Строка echo «File: $file» выводит значение переменной «file» вместе с префиксом «File:» во время каждой итерации. Переменная «file» содержит имя текущего файла, обрабатываемого в цикле.
- Наконец, последняя строка «done» означает конец цикла for.
Вывод для цикла for с подстановкой команд, как показано в приведенном выше примере, будет следующим:
Bash For Loop: синтаксис в стиле C
Синтаксис стиля C подходит пользователям, которые более привыкли к синтаксису цикла for в других языках, таких как C, C++, Java, JavaScript и т. д. Вот основной синтаксис цикла for в стиле C:
для ((
сделанный
В приведенном выше синтаксисе:
относится к начальному значению, с которого будет начинаться переменная цикла. определяет условие, от которого будет зависеть вывод; это условие проверяется на каждой итерации. относится к значению, на которое необходимо обновить переменную цикла. относится к командам или операторам, которые необходимо выполнять для каждой итерации.
Давайте теперь посмотрим на несколько практических примеров, основанных на цикле for в стиле C:
Пример 1: Печать нечетных чисел от 1 до 10
!#/bin/bash for((i = 1; i <= 10; i = i + 1)) do if (( i % 2 == 1 )) then echo "Odd Number: $i" fi done
В приведенном выше фрагменте:
- Строка for((i = 1; i <= 10; i = i + 1)) инициализирует переменную цикла значением 1, проверяет, является ли «значение i меньше или равно 10» для каждой итерации, и, наконец, увеличивает значение переменной цикла. значение i, добавляя 1 к текущему значению после каждой итерации.
- if (( i % 2 == 1 )) проверяет, равно ли значение остатка от деления текущего значения i на 2 1 или нет –
- если делится, то выполняется строка echo «Odd Number: $i», печатающая значение i.
- строка fi означает конец условия if.
- Наконец, последняя строка разграничивает конец цикла for и выполняется в конце.
Вот результат, который вы получите для приведенного выше кода:
Пример 2: Цикл по массиву
#!/bin/bash fruit=(“Яблоко” “Банан” “Апельсин” “Виноград”) for ((i = 0; i < ${#fruits[@]}; я++)); сделать эхо "Фрукты $((i+1)): ${фрукты[i]}" сделанный
В приведенном выше коде:
- Fruits=(“Яблоко” “Банан” “Апельсин” “Виноград”) создает массив всех названий фруктов.
- for ((i = 0; i < ${#fruits[@]}; i++)) сначала инициализирует переменную цикла «i» значением 0, которая также будет действовать как индексная переменная для массива, и цикл продолжается до тех пор, пока «i» меньше количества элементов в массиве «плоды» (обозначается как $ {# фрукты[@]}). Цикл увеличивает «i» на 1 на каждой итерации.
- Так как индексы массива начинаются с 0, а мы хотим отображать их как начинающиеся с 1, в строке будет выводиться «Fruit $((i+1)): ${fruits[i]}» печатает значение, равное текущему индексу «i» плюс 1.
- Наконец, последняя строка означает конец цикла for.
Вот вывод вышеприведенного цикла for: