Prosta pętla for w skryptach powłoki bash – Linux/Unix
W skryptach powłoki bash możemy tworzyć pętle. Jedną z nich jest pętla for, a jej składnia jest następująca:
for x in <zakres> do <instrukcje do wykonania> done
Pętla przypisuje w każdym swoim kroku kolejną wartość do zmiennej x ze zdefiniowanego zakresu. Tym samym wykonuje się tak długo póki nie osiągnie ostatniej wartości z podanego zakresu, bądź wcześniej nie nastąpi wyjście z pętli. Przejdźmy zatem do przykładu:
for i in {0..6}
do
echo "Wartość: $i"
done
W powyższym skrypcie pętla będzie w kolejnych krokach przypisywać wartości od 0 do 6 do zmiennej x oraz wykonywać instrukcje zawarte pomiędzy słówkami do oraz done dokładnie 7 razy, gdyż taki zakres został zdefiniowany. Powyższy skrypt da zatem wynik:
Wartość: 0Wartość: 1
Wartość: 2
Wartość: 3
Wartość: 4
Wartość: 5
Wartość: 6
Rozbudowałem nieco powyższy przykład o instrukcję warunkową if. Spójrzmy zatem na poniższy kod:
for i in {0..6}
do
if [ $i == `date +%u` ]; then
if [ $i == 0 ];
then i=7
fi
echo "Dzisiaj jest $i dzień tygodnia."
fi
done
Pętla wykona się siedem razy. W każdym kroku poprzez if [ $i == `date +%u` ] zostanie sprawdzony warunek, czy wartość zmiennej $x odpowiada dniowi tygodnia w dniu wywołania. Składnia: date +%u zwróci nam kolejno:
0 – w niedzielę, 1 – w poniedziałek, 2 – we wtorek, 3 – w środę, 4 – w czwartek, 5 – w piątek, 6 – w sobotę. Niedziela jest w naszym kalendarzu 7 dniem. Zatem w programie trzeba było dodać poniższy warunek:
if [ $i == 0 ]; then i=7 fi
Zatem wywołując cały skrypt w niedzielę otrzymamy komunikat:
Dzisiaj jest 7 dzień tygodnia.
W następnych wpisach przedstawię bardziej rozbudowane pętle for, które stosować można w skryptach powłoki.