for
- for – struktura sterująca dostępna w większości powłok uniksowych (bash, zsh, ksh, dash) do wykonywania bloków kodu wielokrotnie dla każdego elementu w liście.
- Przydatna w automatyzacji, przetwarzaniu plików, iteracji po argumentach, generowaniu raportów itp.
- Obsługiwana w trybie interaktywnym i skryptowym.
Składnia
Dział zatytułowany „Składnia”for zmienna in lista; do komendydone
- Alternatywnie (jednolinijkowo):
for x in a b c; do echo $x; done
- W bashu dostępna także forma iteracji liczbowej:
for ((i=0; i<10; i++)); do komendydone
Parametry
Dział zatytułowany „Parametry”Element | Opis |
---|---|
zmienna | Zmienna, której wartość przyjmowana jest z listy iteracyjnej |
in lista | Lista wartości (może być pusta – wtedy iteruje po pozycyjnych parametrach skryptu) |
do ... done | Blok kodu wykonywany dla każdego elementu |
(( ... )) | Wariant arytmetyczny (tylko w bash/ksh/zsh) |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 1. Iteracja po nazwach plikówfor plik in *.txt; do echo "Znaleziono: $plik"done
# 2. Prosta pętla numeryczna (Bash)for ((i=1; i<=5; i++)); do echo "Liczba: $i"done
# 3. Iteracja po argumentach skryptufor arg in "$@"; do echo "Argument: $arg"done
- Pierwszy przykład przetwarza wszystkie pliki
.txt
w bieżącym katalogu. - Drugi to klasyczna pętla licznikowa.
- Trzeci iteruje po argumentach przekazanych do skryptu (np.
./skrypt.sh a b c
).
- W powłokach POSIX nie ma formy
for ((...))
; dostępna tylko w rozszerzeniach takich jak bash. - Warto cytować zmienne (
"$x"
) w ciele pętli, by uniknąć problemów ze spacjami lub znakami specjalnymi. - Iterowanie po wynikach poleceń warto poprzedzić cytowaniem i mapowaniem (np.
find ... -print0 | while IFS= read -r -d ''
). - Pętle można zagnieżdżać i łączyć z innymi instrukcjami (np.
if
,case
,break
,continue
).
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
unexpected token 'do' | Błąd składniowy – brak in lub średnika przed do | Popraw składnię: for x in ...; do |
Brak działania w for ((...)) | Powłoka nie obsługuje składni arytmetycznej | Użyj bash, zsh lub zastąp seq + klasyczne for |
Pętle z dziwnym zachowaniem przy spacji | Niezacytowane zmienne zawierające spacje | Cytuj zmienne: "$x" |
Linki i źródła
Dział zatytułowany „Linki i źródła”- Bash Reference Manual – for – dokumentacja GNU Bash.
- POSIX shell – for – opis składni standardowej.
- Advanced Bash-Scripting Guide – for – przewodnik z przykładami.