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.