Както всеки друг скриптов език, Bash също има поддръжка за цикли.
Циклите са чудесни за извършване на повтарящи се задачи. Можем да използваме циклите for и while в нашите Bash скриптове.
Синтаксисът на цикъла for е:
for VARIABLE in PARAM1 PARAM2 PARAM3 do // scope of for loop done
Цикълът for ще се изпълни за всеки параметър. Параметрите могат да бъдат числа, диапазон от числа или низове и т.н.
Този прост пример отпечатва числа от 1 до 5 с помощта на цикъла for:
#!/bin/bash for i in 1 2 3 4 5 do echo '$i' done
Изход:
1 2 3 4 5
Можем също така да дефинираме диапазон от числа, през които да преминаваме:
Например:
for i in {1..5} do echo '$i' done
Изход:
1 2 3 4 5
Можем също така да използваме цикъла for, за да преминем през параметри на низа:
#!/bin/bash for day in MON TUE WED THU FRI SAT SUN do echo '$day' done
Изход:
MON TUE WED THU FRI SAT SUN
Можем да използваме и синтаксис в стил 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 също поддържа, докато цикли. Докато циклите изпълняват набор от инструкции, докато условието оцени като истина.
Синтаксисът на цикъла Bash while е:
while [condition] do //execute instructions done
Състоянието се оценява, преди да се изпълнят каквито и да било инструкции. Следователно е необходимо да имате средство за актуализиране на условието, в противен случай цикълът ще се изпълни завинаги.
По-долу е прост цикъл while, който отпечатва числа от 1 до 5. Цикълът се прекратява, когато числото е по-голямо от 5.
#!/bin/bash num=1 while [ $num -le 5 ] do echo '$num' let num++ done
Подобно на цикъла for, ние също можем да напишем цикъла bash while в C-стил като език.
Например:
#!/bin/bash num=1 while((num <= 5)) do echo $num let num++ done