for în Linux / Bash

Scripting Bash POSIX / Bash built-in

Iterează peste o listă de elemente, fișiere, argumente sau intervale de numere.

Sintaxă comandă
for element in lista; do
  ...
done

Ce face for

Bucla for repetă un set de comenzi pentru fiecare element dintr-o mulțime dată. Poate parcurge liste de cuvinte, rezultatele unei măști de fișiere (globbing, ex. *.txt) sau secvențe numerice.

În Bash este suportată și sintaxa în stilul limbajului C: for ((i=0; i<10; i++)).

Opțiuni și argumente

Opțiune / Parametru Descriere
for element in lista Sintaxa clasică: atribuie variabilei 'element' fiecare valoare din listă pe rând.
{1..5} Expandare de acolade pentru intervale numerice (1, 2, 3, 4, 5).
for f in *.log Parcurgere sigură a fișierelor fără a depinde de comanda ls.
for ((i=0; i<N; i++)) Sintaxă de buclă numerică în stilul limbajelor C/Java.

Exemple

Exemplul 1: Iterarea peste o listă de orașe

Afișăm fiecare destinație pe rând.

for oras in "Bucuresti" "Cluj" "Timisoara"; do
  echo "Verificare server in: $oras"
done

Rezultat

Verificare server in: Bucuresti
Verificare server in: Cluj
Verificare server in: Timisoara

Exemplul 2: Buclă numerică cu pas

Numărăm din 10 în 10 până la 30.

for i in {10..30..10}; do
  echo "Progres: $i%"
done

Rezultat

Progres: {10..30..10}%

Greșeli frecvente

  • Scrierea for f in $(ls *.txt): dacă un fișier conține spații în nume, acesta va fi rupt în mai multe bucăți eronate. Forma corectă și sigură este direct for f in *.txt.

Comenzi înrudite

  • while: Execută repetat un bloc de comenzi atâta timp cât condiția specificată rămâne adevărată.
  • case: Ramificare multi-opțiune bazată pe potrivirea de tipare text (pattern matching).
  • if / else: Execuția condiționată a blocurilor de comenzi pe baza codurilor de ieșire sau a testelor logice.