Скрипт Linux Shell Примеры BASH для цикла

Языки сценариев, такие как BASH, имеют аналогичные конструкции программирования, как и другие языки. Например, вы можете использовать параметры импорта, чтобы получить ввод с клавиатуры и сохранить их как переменные. Затем вы можете заставить скрипт выполнить определенное действие на основе значения входных параметров.

Ключевой частью любого языка программирования и написания сценариев является возможность снова и снова запускать один и тот же фрагмент кода. BASH предлагает несколько способов повторить код — процесс, также известный как зацикливание. Цикл for повторяет определенный раздел кода снова и снова. Они полезны для того, чтобы ряд команд продолжал работать до тех пор, пока не будет выполнено определенное условие, после чего они остановятся.

Как перебрать список

Рассмотрим простой пример сценария под названием loop.sh:

#! / Bin / Баш
для номера в 1 2 3 4 5
делать
номер эха
сделанный
выход 0

BASH способ использования циклов for несколько отличается от того, как большинство других языков программирования и сценариев обрабатывают циклы for. Давайте разберем сценарий.

В цикле BASH «for» all операторы между do и done выполняются один раз для каждого элемента в списке. В нашем примере список — это все, что идет после слова в — числа 1 2 3 4 5.

Каждый раз, когда цикл повторяется, следующее значение в списке вставляется в переменную, указанную после слова для. В приведенном выше цикле переменная называется числом.

Оператор echo отображает информацию на экране. Следовательно, этот пример берет числа от 1 до 5 и выводит их один за другим на экран:

пример цикла в скрипте bash

Как выполнить цикл между начальной и конечной точкой

Проблема с нашим примером скрипта loop.sh состоит в том, что если вы хотите обработать больший список — например, от 1 до 500 — потребовались бы годы, чтобы набрать все числа в первую очередь.

Это подводит нас ко второму примеру, который показывает, как указать начальную и конечную точку:

#! / Bin / Баш
за номер в {1..10}
делать
echo "$ number"
сделанный
выход 0

Правила в основном одинаковы. Значения после слова «in» составляют список для повторения, и каждое значение в списке помещается в переменную (то есть число), и каждый раз, когда цикл повторяется, выполняются операторы между do и done.

Основным отличием является способ формирования списка. Фигурные скобки {} в основном обозначают диапазон, и диапазон, в данном случае, составляет от 1 до 10 (две точки разделяют начало и конец диапазона).

Таким образом, этот пример просматривает каждое число от 1 до 10 и выводит число на экран следующим образом:

Тот же цикл мог бы быть написан так, с синтаксисом, идентичным первому примеру:

для номера в 1 2 3 4 5 6 7 8 9 10

Как пропустить числа в диапазоне

В предыдущем примере показано, как выполнить цикл между начальной и конечной точкой, поэтому теперь мы рассмотрим, как пропустить числа в диапазоне.

Представьте, что вы хотите переключаться между 0 и 100, но показывать только каждое десятое число. Следующий скрипт получает этот вывод:

#! / Bin / Баш
для номера в {0..100..10}
делать
echo "$ number"
сделанный
выход 0

Правила в основном одинаковы. Существует список, переменная и набор операторов, которые должны выполняться между do и done. Список на этот раз выглядит так: {} 0..100..10.

Первое число равно 0, а конечное число равно 100. Третье число (10) — это количество элементов в списке, которое оно будет пропускать.

Таким образом, приведенный выше пример отображает следующий вывод:

альтернативный выход bash loop

Практический пример

Для циклов можно сделать больше, чем повторять списки чисел. На самом деле вы можете использовать вывод других команд в качестве списка.

В следующем примере показано, как преобразовать аудиофайлы из MP3 в WAV:

#! / Bin / Баш
для файла в ./*.mp3
делать
mpg -w ./wavs/"$ndomfile automotive".wav "$ file"
сделанный

Список в этом примере — это каждый файл с расширением .MP3 в текущей папке, а переменная — это файл.

Команда mpg преобразует файл MP3 в WAV. Однако вам, вероятно, нужно сначала установить этот инструмент с помощью менеджера пакетов.

Ссылка на основную публикацию