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.
Składnia
Dział zatytułowany „Składnia”until [warunek]; do poleceniadone
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).
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
warunek | Polecenie testujące, po którego powodzeniu pętla zostanie zakończona. |
polecenia | Blok instrukcji wykonywanych w każdej iteracji. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 1) Pętla do momentu utworzenia plikuuntil [ -f /tmp/gotowe ]; do echo "Czekam na plik..." sleep 2doneecho "Plik utworzony."
# 2) Próba połączenia z serwerem aż do sukcesuuntil ping -c1 example.com &>/dev/null; do echo "Brak połączenia, ponawiam próbę..." sleep 5doneecho "Połączono z example.com"
# 3) Pętla zakończona po 3 próbachlicznik=0until [ $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.
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 |
---|---|---|
Pętla nigdy się nie kończy | Warunek nigdy nie zwraca kodu 0. | Zweryfikuj logikę testu lub dodaj break w odpowiednim miejscu. |
Pętla nie wykonuje się wcale | Warunek jest spełniony od początku. | Odwróć warunek lub sprawdź dane początkowe. |
Niepoprawna składnia | Błędy w strukturze until ... do ... done . | Upewnij się, że używasz poprawnych słów kluczowych i średników. |
Linki i źródła
Dział zatytułowany „Linki i źródła”- GNU Bash Manual – until
- man bash – sekcja o pętlach.
- Bash Hackers Wiki – Looping – omówienie pętli w bash.