Przejdź do głównej zawartości

until


  • until – wbudowana konstrukcja w powłokach (bash, ksh, zsh) realizująca pętlę odwrotną do while.
  • Wykonuje blok poleceń tak długo, aż testowany warunek zwróci status sukcesu (kod wyjścia 0).
  • Przydatna, gdy chcemy powtarzać akcję do momentu spełnienia warunku.

Okno terminala
until [warunek]; do
polecenia
done
  • warunek jest dowolnym poleceniem lub wyrażeniem, którego kod wyjścia decyduje o zakończeniu pętli.
  • Pętla działa odwrotnie do while: wykonuje się dopóki warunek zwraca status różny od zera (fałsz).

ParametrOpis
warunekPolecenie testujące, po którego powodzeniu pętla zostanie zakończona.
poleceniaBlok instrukcji wykonywanych w każdej iteracji.

Okno terminala
# 1) Pętla do momentu utworzenia pliku
until [ -f /tmp/gotowe ]; do
echo "Czekam na plik..."
sleep 2
done
echo "Plik utworzony."
Okno terminala
# 2) Próba połączenia z serwerem aż do sukcesu
until ping -c1 example.com &>/dev/null; do
echo "Brak połączenia, ponawiam próbę..."
sleep 5
done
echo "Połączono z example.com"
Okno terminala
# 3) Pętla zakończona po 3 próbach
licznik=0
until [ $licznik -ge 3 ]; do
echo "Próba $((licznik+1))"
licznik=$((licznik+1))
done

  • W until warunek jest sprawdzany przed każdą iteracją.
  • Warunek jest spełniony, gdy kod wyjścia polecenia wynosi 0 – wtedy pętla się kończy.
  • W połączeniu z break można przerwać pętlę niezależnie od warunku.
  • until true; do ... done wykona się zero razy, ponieważ warunek jest od razu spełniony.

Błąd / KomunikatPrzyczynaRozwiązanie
Pętla nigdy się nie kończyWarunek nigdy nie zwraca kodu 0.Zweryfikuj logikę testu lub dodaj break w odpowiednim miejscu.
Pętla nie wykonuje się wcaleWarunek jest spełniony od początku.Odwróć warunek lub sprawdź dane początkowe.
Niepoprawna składniaBłędy w strukturze until ... do ... done.Upewnij się, że używasz poprawnych słów kluczowych i średników.