while în Linux / Bash

Scripting Bash POSIX / Bash built-in

Execută repetat un bloc de comenzi atâta timp cât condiția specificată rămâne adevărată.

Sintaxă comandă
while [[ condiție ]]; do
  ...
done

Ce face while

Bucla while este ideală pentru iterații unde numărul de pași nu este cunoscut dinainte, ci depinde de o stare externă (de exemplu așteptarea ca un serviciu să pornească).

Cea mai folosită construcție este while IFS= read -r linie; do ... done < fisier.txt, care este metoda standard și sigură de a citi un fișier linie cu linie în Bash.

Opțiuni și argumente

Opțiune / Parametru Descriere
while [[ conditie ]] Evaluează condiția la începutul fiecărei iterații.
while IFS= read -r linie Citește intrarea linie cu linie, păstrând spațiile de la margini și caracterele backslash.
break Oprește imediat execuția buclei și trece la instrucțiunea de după done.
continue Sare peste restul instrucțiunilor curente și începe următoarea iterație.

Exemple

Exemplul 1: Citirea unui fișier linie cu linie

Procesăm fiecare rând dintr-o listă de utilizatori.

cat << 'EOF' > utilizatori.txt
ana
bogdan
cristi
EOF
while IFS= read -r user; do
  echo "Utilizator activ: $user"
done < utilizatori.txt

Rezultat

Utilizator activ: ana
Utilizator activ: bogdan
Utilizator activ: cristi

Exemplul 2: Buclă numerică simplă cu contor

Incrementăm o variabilă până atinge valoarea 3.

CONT=1
while [[ $CONT -le 3 ]]; do
  echo "Incercarea $CONT"
  ((CONT++))
done

Rezultat

Incercarea 1
Incercarea 2
Incercarea 3

Greșeli frecvente

  • Crearea unei bucle infinite prin uitarea incrementării variabilei de control în interiorul corpului buclei.

Comenzi înrudite

  • for: Iterează peste o listă de elemente, fișiere, argumente sau intervale de numere.
  • read: Citește o linie de text de la tastatură sau din intrarea standard și o salvează într-o variabilă.
  • if / else: Execuția condiționată a blocurilor de comenzi pe baza codurilor de ieșire sau a testelor logice.