Jako každý jiný skriptovací jazyk má Bash také podporu pro smyčky.
Smyčky jsou skvělé pro opakované úkoly. V našich Bash skriptech můžeme použít smyčky for a while.
Syntaxe smyčky for je:
for VARIABLE in PARAM1 PARAM2 PARAM3 do // scope of for loop done
Smyčka for se provede pro každý parametr. Parametry mohou být čísla, rozsah čísel nebo řetězců atd.
Tento jednoduchý příklad vytiskne čísla od 1 do 5 pomocí smyčky for:
#!/bin/bash for i in 1 2 3 4 5 do echo '$i' done
Výstup:
1 2 3 4 5
Můžeme také definovat rozsah čísel, kterými se můžeme procházet:
Například:
for i in {1..5} do echo '$i' done
Výstup:
1 2 3 4 5
Můžeme také použít smyčku for to loop through string parameters:
#!/bin/bash for day in MON TUE WED THU FRI SAT SUN do echo '$day' done
Výstup:
MON TUE WED THU FRI SAT SUN
Můžeme také použít syntaxi ve stylu C k napsání smyčky for. Například:
#!/bin/bash for ((i=1; i<=5; i++)) do echo '$i' done
Výstup
1 2 3 4 5
Chcete-li zobrazit všechny soubory v aktuálním adresáři pomocí smyčky bash for, použijeme:
#!/bin/bash for fname in ./ do ls -l $fname done
Bash také podporuje while. Zatímco smyčky provádějí sadu pokynů, dokud se podmínka nevyhodnotí jako true.
Syntaxe smyčky Bash while je:
while [condition] do //execute instructions done
Podmínka se vyhodnotí před provedením jakýchkoli pokynů. Proto je nutné mít prostředky k aktualizaci podmínky, jinak se smyčka provede navždy.
Následuje jednoduchá smyčka while, která tiskne čísla 1 až 5. Smyčka je ukončena, když je číslo větší než 5.
#!/bin/bash num=1 while [ $num -le 5 ] do echo '$num' let num++ done
Stejně jako smyčka for můžeme také psát smyčku bash while v jazyce C.
Například:
#!/bin/bash num=1 while((num <= 5)) do echo $num let num++ done