Pętla for w BASH-u

Stronę tą wyświetlono już: 245 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:

Listing 1
  1. for file in "*.jpg";
  2. do
  3. echo $file;
  4. 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:

Listing 2
  1. seq 1 5

wyświetli następujący rezultat:

1
2
3
4
5

To samo polecenie z trzema argumentami:

Listing 3
  1. 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:

Listing 4
  1. for i in $(seq 1 5);
  2. do
  3. echo $i;
  4. 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:

Listing 5
  1. for (( i=1; $i <= 5 ; i++ ));
  2. do
  3. echo $i;
  4. 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.

Komentarze