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ść: 0
Wartość: 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.