Używanie pętli „do” w skrypcie Bash do zapętlania poleceń.
Bash (Bourne Again Shell) to wiersz poleceń powłoki i język skryptowy w systemach operacyjnych GNU/Linux. Jest to domyślna powłoka dla większości dystrybucji Linuksa.
Podobnie jak większość języków skryptowych, Bash zapewnia składnię pętli do wielokrotnego powtarzania podobnych zadań. W tym artykule dowiemy się, jak korzystać z dopóki
pętla w Bash.
Wstęp
ten dopóki
pętla w Bash służy do wielokrotnego wykonywania poleceń (wykonywanych poleceń) na podstawie wyników innego polecenia (polecenia warunkowego). Wykonywane polecenia będą działały, dopóki polecenie warunku nie zawiedzie (tj. Zwróci stan niezerowy. Każde polecenie w Linuksie zwraca 0 dla sukcesu i niezerową liczbę całkowitą dla niepowodzenia). To jest dokładnie przeciwieństwo dopóki
pętla, w której wykonywane polecenia działają aż do pomyślnego wykonania polecenia warunku.
Jeśli istnieje wiele poleceń warunkujących, instrukcja uwzględnia tylko stan ostatniego polecenia na liście, tj. pętla będzie działać, dopóki ostatnie polecenie na liście nie będzie zawodzić.
Ogólna składnia
Ogólna składnia dla dopóki
pętla w Bash to:
dopóki nie skończysz
Lista poleceń wykonywania będzie działać, dopóki ostatnie polecenie na liście poleceń warunku nie powiedzie się. Po pomyślnym wykonaniu ostatniego polecenia pętla kończy działanie.
Użytkownicy mogą określić dowolny plik wykonywalny na listach poleceń. Mogą to być standardowe programy linuksowe lub niestandardowe programy lub skrypty użytkownika. Każde polecenie powinno znajdować się w nowym wierszu lub oddzielone średnikiem w tym samym wierszu.
Zobaczmy kilka przykładów.
Zapętlanie, aż zmienna ma określoną wartość: Poniższa pętla jest wykonywana do wartości zmiennej x
jest 10.
x=0 dopóki [[ $x -eq 10 ]] wykonaj echo $x ((x++)) gotowe
W każdej iteracji sprawdzamy, czy wartość x wynosi 10. Wartość jest sprawdzana za pomocą test
Komenda. [[ Wyrażenie ]]
jest składnią polecenia testowego (Patrz człowiek test
).
Następnie wewnątrz zrób... gotowe
bloku, po prostu wypisujemy wartość x i zwiększamy ją. Pętla kończy się po pomyślnym wykonaniu polecenia warunku, tj. Kiedy $x
jest równe 10
.
Notatka: Zmienna indeksu, która ma być używana w pętli „do czasu”, ma być inicjowana przed pętlą „do” lub w poleceniach warunkowych, w przeciwieństwie do pętli for, która umożliwia niejawne zainicjowanie zmiennej.
Z wieloma poleceniami warunku: Poniższa pętla tworzy 5 katalogów o nazwie dir0, dir1, ... dir4
.
z=0 dopóki echo "Cześć" echo "Do widzenia" [[ $z -eq 5 ]] wykonaj echo "Tworzenie dir$z..." mkdir dir$z ((z++)) gotowe
Pierwsze polecenia echo „Hi” i echo „Bye” zostaną wykonane raz całkowicie; ich sukces lub porażka nie ma żadnego wpływu na to, jak długo będzie działać pętla.
Następnie zostanie wykonane polecenie testowe sprawdzające wartość zmiennej z. Dopóki ta komenda nie zadziała, tj. dopóki wartość z nie wyniesie 5, komendy warunkowe i wykonywane komendy działają w kolejności. Tutaj, dla każdej iteracji, najpierw uruchomi 2 polecenia echa w warunku, a następnie trzecie polecenie warunku sprawdzi wartość z. Jeśli nie jest 5, wchodzi do pętli i wykonuje podane polecenia.
Przerwij i kontynuuj
Instrukcja przerwania dla warunkowego wyjścia
Możemy również użyć instrukcji warunkowej Jeśli
wewnątrz pętli. ten Jeśli
oświadczenie może być używane z złamać
instrukcja dla warunkowego wyjścia z pętli.
x=0 dopóki [[ $x -eq 10 ]] wykonaj jeśli [[ $x -eq 5 ]] przerwij fi echo $x ((x++)) gotowe
Powyżej dopóki pętla wypisze liczby od 0 do 4. Następnie, gdy wartość i wynosi 5, wyrwie się z pętli. Jest to szczególnie przydatne, gdy pętla ma zostać zakończona, gdy polecenie daje określone wyjście.
Kontynuuj instrukcję, aby warunkowo pominąć iterację
Bash ma również kontyntynuj
instrukcja, aby pominąć pozostałą część iteracji w pętli, jeśli spełniony jest określony warunek.
x=0 dopóki [[ $x -eq 10 ]] wykonaj jeśli [[ $x -eq 5 ]] kontynuuj fi echo $x ((x++)) gotowe
Powyższa pętla wypisze liczby od 0 do 10, z wyjątkiem 5, ponieważ podczas iteracji x=5
istnieje instrukcja continue, która pominie resztę kodu w pętli na początku z iteracją x=6
.
Korzystanie z pętli: skrypty i wiersz poleceń
Składnia pętli może być używana bezpośrednio w powłoce Bash lub z pliku wykonywalnego skryptu powłoki. Podobny do dla
oraz dopóki
pętle, raz i dopóki
Składnia pętli jest wprowadzana w powłoce, powłoka kontynuuje monit, aby umożliwić użytkownikowi kontynuowanie zapętlonych poleceń.
Albo użytkownik może zapisać to w pliku skryptu i wykonać plik skryptu.
ten #!/kosz/bash
na początku określa interpreter, który ma być użyty podczas wykonywania pliku. Chociaż Bash jest obecnie najczęściej używaną powłoką, niektórzy użytkownicy wolą powłoki takie jak zsh
, który należy podać w miejscu bash na początku tego pliku.
Aby nadać uprawnienia do wykonywania dla tego pliku uruchom:
chmod +x test.sh
Wreszcie, uruchomić plik, uruchomić:
./test.sh
Wniosek
ten dopóki
pętla to kolejna ważna funkcja w skryptach Bash. Ma to szczególne znaczenie w złożonych skryptach, gdy oczekuje się, że pewien zestaw programów zwróci stan niepowodzenia, a niektóre inne polecenia mają zostać wykonane w celu zarejestrowania awarii, szczegółowego wyświetlenia błędu lub po prostu wykonania niektórych alternatywnych programów.