Ключевой частью любого языка программирования и написания сценариев является способность запускать один и тот же кусок кода снова и снова. Bash предлагает несколько способов повторить код — процесс, называемый зацикливанием. Цикл for повторяет определенный раздел кода. Они полезны для выполнения ряда команд до тех пор, пока не будет выполнено определенное условие, после которого команды останавливаются.
Как перебрать список
Языки сценариев, такие как Bash, имеют аналогичные программные конструкции, как и другие языки. Например, параметры импорта получают ввод с клавиатуры и сохраняют эти входные данные как переменные, которые затем выполняют определенное действие в зависимости от значения входных параметров .
Рассмотрим простой пример сценария с названием loop.sh :
#! / bin / bash
для числа в 1 2 3 4 5
do
echo $ number
done
exit 0
Bash способ использования для петель несколько отличается от того , как другие программирования и языки сценариев обработки для петель. Давайте разберем сценарий.
В цикле BASH for все операторы между do и done выполняются один раз для каждого элемента в списке. В этом примере список — это все, что следует за словом в числах 1 2 3 4 5 .
Каждый раз, когда цикл повторяется, следующее значение в списке вставляется в переменную, указанную после слова для . В приведенном выше цикле переменная называется числом .
Оператор echo отображает информацию на экране. Следовательно, этот пример принимает числа от 1 до 5 и выводит каждое число одно за другим на экран:
Как выполнить цикл между начальной и конечной точкой
Проблема с этим скриптом loop.sh состоит в том, что если вы хотите обработать больший список (например, от 1 до 500), потребуются целые годы, чтобы набрать все числа. Вместо этого укажите начальную и конечную точки:
#! / bin / bash
для числа в {1..10}
do
echo "$ number"
done
выход 0
Правила одинаковы. Значения после слова in составляют список для повторения, и каждое значение в списке помещается в переменную (то есть число), и каждый раз, когда цикл повторяется, выполняются операторы между do и done .
Основным отличием является способ формирования списка. Фигурные скобки обозначают диапазон, и диапазон, в данном случае, составляет от 1 до 10 (две точки разделяют начало и конец диапазона).
Следовательно, этот пример просматривает каждое число от 1 до 10 и выводит число на экран.
Тот же цикл мог бы быть написан так, с синтаксисом, идентичным первому примеру:
для номера в 1 2 3 4 5 6 7 8 9 10
Как пропустить числа в диапазоне
В предыдущем примере показано, как выполнить цикл между начальной и конечной точкой. Вот как можно пропустить числа в диапазоне.
Например, чтобы выполнить цикл от 0 до 100, но показывать только каждое десятое число, используйте следующий скрипт для получения этого вывода:
#! / bin / bash
для числа в {0..100..10}
сделать
эхо "$ число"
сделано,
выход 0
Правила одинаковы. Существует список, переменная и набор операторов, которые должны выполняться между do и done . На этот раз список выглядит так: {0..100..10} .
Первое число равно 0, а конечное число равно 100. Третье число (10) — это количество элементов в списке, которое оно будет пропускать.
Таким образом, приведенный выше пример отображает следующий вывод:
Практический пример
Для циклов делать больше, чем повторять списки чисел. Например, используйте вывод других команд в качестве списка.
#! / bin / bash
для файла в ./*.mp3
do
mpg -w ./wavs/"$ndomfile‹".wav "$ file"
сделано
Список в этом примере — это каждый файл с расширением .MP3 в текущей папке, а переменная — это файл.
Команда mpg преобразует файл MP3 в WAV. Однако вам, вероятно, нужно сначала установить этот инструмент с помощью менеджера пакетов.