Pętla FOR
jest najbardziej intuicyjną pętlą jaka jest używana w programowaniu,
znajduje się ona niemalże w każdym języku programowania.
Podpowiedź
W Bashu pętla for występuje w dwóch wariacjach:
Na tej stronie skupimy się na pętli „bash like for”.
Podpowiedź
Pętla FOR
w stylu Bash jest bardzo przydatna w sytuacjach, gdy chcemy wykonać jakąś operację na wielu elementach
jakiegoś zbioru (a nie wiemy ile tych elementów jest) np. chcemy wykonać coś na wszystkich plikach w danym
katalogu (lub tylko na tych o określonej nazwie).
Pętla FOR
w stylu Basha jest najcześciej używana, jej składnia przedstawia się następująco:
for <zmienna> in <lista> ; do
zrób_coś
i_jeszcze_coś
done
Podpowiedź
Człon <lista>
może być łańcuchem znakowym, zmienną tablicą lub po prostu listą słów:
Przykład
Sposób #1 | Sposób #2 |
---|---|
for x in jeden dwa trzy ; do
echo "To jest $x"
done
|
for x in jeden dwa trzy
do
echo "To jest $x"
done
|
Ostrzeżenie
Czy zauwazyłeś, że w Sposobie #2
nie ma średnika przed słowem kluczowym do
?
Programista Basha ma do wyboru, albo umieścić średnik przed slowem do
, albo zacząć słowo do
od nowej linii.
Nie jest to intuicyjne i jest czasem powodem występowania dziwnych błedów w skrypcie (dlatego zwracam na to uwagę).
Wynik
W obu przypadkach będzie identyczny.
To jest jeden
To jest dwa
To jest trzy
Jak to działa
x
przypisana jest lista, która składa się z trzech elementów: jeden
, dwa
, trzy
.
Wartośćią zmiennej x
staje się po kolei każdy z elementów listy.
Następnie na każdym z tych elementów wykonywane jest polecenie: echo "To jest $x".
Przykład z życia wzięty - zamiana nazw plików pisanych DUŻYMI literami na nazwy pisane małymi literami:
#!/bin/bash
for nazwa in * ; do
mv "$nazwa" `echo "$nazwa" | tr '[A-Z]' '[a-z]'`
done
Za zmianę DUŻYCH liter na małe (i na odwrót) odpowiedzialne jest polecenie tr.
Podpowiedź
Czy wiesz, że zamiast uzycia polecnia tr można użyć operacji na zmiennej?