Примеры цикла Bash и цикла while

Как и любой другой язык сценариев, Bash также поддерживает циклы.

Циклы отлично подходят для выполнения повторяющихся задач. Мы можем использовать циклы for и while в наших сценариях Bash.



Баш для цикла

Синтаксис цикла for:


for VARIABLE in PARAM1 PARAM2 PARAM3 do // scope of for loop done

Цикл for будет выполняться для каждого параметра. Параметры могут быть числами, диапазоном чисел или строк и т. Д.

Пример Bash For Loop

Этот простой пример печатает числа от 1 до 5 с помощью цикла for:


#!/bin/bash for i in 1 2 3 4 5 do echo '$i' done

Выход:

1 2 3 4 5

Bash For Loop - Печать диапазона чисел

Мы также можем определить диапазон чисел для перебора:

Например:

for i in {1..5} do echo '$i' done

Выход:


1 2 3 4 5

Bash Loop Through Strings

Мы также можем использовать цикл for для перебора строковых параметров:

#!/bin/bash for day in MON TUE WED THU FRI SAT SUN do echo '$day' done

Выход:

MON TUE WED THU FRI SAT SUN

Bash For Loop - стиль C

Мы также можем использовать синтаксис в стиле C для написания цикла for. Например:

#!/bin/bash for ((i=1; i<=5; i++)) do echo '$i' done

Выход


1 2 3 4 5

Цикл для печати списка файлов в текущем каталоге

Чтобы вывести список всех файлов в текущем каталоге с помощью цикла bash for, мы используем:

#!/bin/bash for fname in ./ do ls -l $fname done

Баш во время цикла

Bash также поддерживает циклы while. Циклы while выполняют набор инструкций до тех пор, пока условие не станет истинным.

Синтаксис цикла while в Bash:

while [condition] do //execute instructions done

Состояние оценивается перед выполнением любых инструкций. Следовательно, необходимо иметь средства обновления условия, иначе цикл будет выполняться вечно.


Пример Bash While Loop

Ниже приведен простой цикл while, который печатает числа от 1 до 5. Цикл завершается, когда число больше 5.

#!/bin/bash num=1 while [ $num -le 5 ] do echo '$num' let num++ done

Bash C-стиль с циклом

Как и цикл for, мы также можем написать цикл bash while на языке C-стиле.

Например:

#!/bin/bash num=1 while((num <= 5)) do echo $num let num++ done