Jako každý jiný skriptovací jazyk má Bash také podporu pro smyčky.
Smyčky jsou skvělé pro provádění opakujících se úkolů. Můžeme použít smyčky for a while v našich skriptech Bash.
Bash For Loop
Syntaxe cyklu for je:
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// scope of for loop
done
Pro každý parametr se provede cyklus for. Parametry mohou být čísla, rozsah čísel nebo řetězce atd.
Příklad Bash for Loop
Tento jednoduchý příklad vytiskne čísla 1 až 5 pomocí cyklu for:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
Výstup:
1
2
3
4
5
Bash For Loop – Tisk rozsahu čísel
Můžeme také definovat rozsah čísel, kterými se má procházet:
Například:
for i in {1..5}
do
echo "$i"
done
Výstup:
1
2
3
4
5
Bash smyčka přes řetězce
Můžeme také použít cyklus for k procházení parametrů řetězce:
#!/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
Bash For Loop – styl C
K zápisu cyklu for můžeme také použít syntaxi ve stylu C. Například:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
Výstup
1
2
3
4
5
Pro opakování tisku seznamu souborů v aktuálním adresáři
Chcete-li vypsat všechny soubory v aktuálním adresáři pomocí cyklu bash for, použijeme:
#!/bin/bash
for fname in ./
do
ls -l $fname
done
Bash While Loop
Bash také podporuje while smyčky. Zatímco cykly provádějí sadu instrukcí, dokud se podmínka nevyhodnotí jako pravdivá.
Syntaxe cyklu Bash while je:
while [condition]
do
//execute instructions
done
Podmínka je vyhodnocena před provedením jakýchkoli instrukcí. Proto je nutné mít prostředky pro aktualizaci podmínky, jinak se smyčka bude vykonávat navždy.
Příklad Bash While Loop
Následuje jednoduchá smyčka while, která tiskne čísla 1 až 5. Smyčka se ukončí, když je číslo větší než 5.
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
Smyčka ve stylu Bash C
Stejně jako smyčku for můžeme také napsat smyčku bash while v jazyce podobném C.
Například:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done