Kolejnym rodzajem pętli po for jest pętla until. Pozwala ona na sprawdzenie warunku na początku, zanim wykonane zostaną polecenia w niej zawarte. Jeżeli warunek jest prawdziwy, pętla zakończy działanie bez ponownego wykonania poleceń. Jednak trzeba obchodzić się z jej wdrożeniem ostrożnie dlaczego? Zobaczysz w przykładzie.
Budowa pętli until
Pętla until nie jest zbyt skomplikowana w swojej budowie. Na początku sprawdzany jest warunek, następnie, jeżeli jest on nie poprawny, wykonywane są polecenia w niej zawarte. Tak więc widzisz, że spełnienie warunku kończy działanie skryptu.
1 2 3 |
until [ warunek ] ; do polecenie done |
Przykłady, przykłady
Poniższy przykład jest nieco zmienionym przykładem z poprzedniego wpisu. Zamiast słowa kluczowego while jest until. Warunek sprawdza, czy wartość zmiennej x jest większa lub równa 10, następnie do czasu, gdy warunek zostanie spełniony, wypisywany jest komunikat oraz zwiększana jest wartość zmiennej x. Gdy warunek zostanie spełniony, czyli x = 10 zakończy swoje działanie i właśnie dlatego na screnie skrypt kończy swoje działanie na 9 kroku.
1 2 3 4 5 6 |
#!/bin/bash x=1 until [ $x -ge 10 ] ; do echo "Warunek sprawdzony po raz: $x" x=$[x + 1] done |
Podsumowanie
Widzisz, że ta pętla jest inna niż wszystkie, ponieważ kończy działanie, gdy warunek jest spełniony, dlatego należy być bardzo ostrożnym, aby nie pominąć kroku, który może dać błędne wyniki.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).