Pętla for w BASH-u

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 29907 razy

Iterowanie po elementach tablicy

Pętla for w BASH-u występuje w dwóch odmianach. Jedna z nich umożliwia iterowanie po elementach np. tablicy. Oto przykład z wypisywaniem kolejno nazw plików .jpg znajdujących się w bieżącej lokalizacji:

for file in "*.jpg"; do echo $file; done

Powyższy kod wyświetli w kolumnie wszystkie pliki o rozszerzeniu .jpg w konsoli systemowej.

Iterowanie z określonym krokiem i zakresem

Wykonanie klasycznej pętli for, gdzie jest licznik, warunek kończący pętlę i krok wymaga wykorzystania polecenia seq, którego wywołanie z dwoma parametrami:

seq 1 5

wyświetli następujący rezultat:

1
2
3
4
5

To samo polecenie z trzema argumentami:

seq 1 2 5

wyświetli następujący wynik:

1
3
5

Teraz wystarczy w przebiegły sposób wykorzystać to polecenie aby otrzymać coś na wzór klasycznej pętli for:

for i in $(seq 1 5); do echo $i; done

Rezultat:

1
2
3
4
5

Oczywiście, powyższe działanie nie ma zbyt wielkiego sensu, no chyba że wewnątrz pętli wykonywane będą jakieś bardziej złożone zadania.

Powyższa wersja pętli for zadziała w systemowym Shell-u, istnieje jednak bardziej klasycznie wyglądająca pętla, która również działa, ale tylko w BASH-u:

for (( i=1; $i <= 5 ; i++ )); do echo $i; done

Wynik działania powyższego kodu:

1
2
3
4
5

Przerywanie działania pętli

Za pomocą break można w dowolnym miejscu pętli przerwać jej działanie, natomiast za pomocą continue przerwać wykonywanie kodu bieżącego bloku instrukcji i przejść do następnego wykonania pętli.