Android

Bash while loop

Shell Scripting - For Loops

Shell Scripting - For Loops

Spisu treści:

Anonim

Pętle są jedną z podstawowych koncepcji języków programowania. Pętle są przydatne, gdy chcesz uruchomić serię poleceń wiele razy, aż do spełnienia określonego warunku.

W językach skryptowych, takich jak Bash, pętle są przydatne do automatyzacji powtarzalnych zadań. Istnieją 3 podstawowe konstrukcje pętli w skryptach Bash, dla pętli, pętli while i pętli till.

W tym samouczku wyjaśniono podstawy pętli while w języku Bash, a także instrukcje break i continu, które zmieniają przepływ pętli.

Bash podczas Loop

Pętla while służy do wykonywania danego zestawu poleceń nieznaną liczbę razy, dopóki dany warunek zostanie spełniony.

Pętla Bash while ma następującą postać:

while do done

Warunek jest oceniany przed wykonaniem poleceń. Jeśli warunek ma wartość true, polecenia są wykonywane. W przeciwnym razie, jeśli warunek zostanie uznany za fałszywy, pętla zostanie zakończona, a kontrola programu zostanie przekazana do następującego polecenia.

W poniższym przykładzie na każdej iteracji pętla wypisuje bieżącą wartość zmiennej i i zwiększa ją o jeden.

i=0 while do echo Number: $i ((i++)) done

Pętla Tue iteruje tak długo, jak i jest mniejsze lub równe dwa. Wytworzy następujące dane wyjściowe:

Number: 0 Number: 1 Number: 2

Nieskończony podczas pętli

Nieskończona pętla to pętla, która powtarza się w nieskończoność i nigdy się nie kończy. Jeśli warunek zawsze ma wartość true, otrzymasz nieskończoną pętlę.

W poniższym przykładzie używamy wbudowanej komendy : która zawsze zwraca wartość true, aby utworzyć nieskończoną pętlę. Możesz również użyć wbudowanej komendy true lub dowolnej innej instrukcji, która zawsze zwraca true.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

Pętla while powyżej będzie działać w nieskończoność. Możesz zakończyć pętlę, naciskając CTRL+C

Oto ekwiwalent jednowierszowy:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Czytaj plik linia po linii

Jednym z najczęstszych zastosowań pętli while jest odczytywanie pliku, strumienia danych lub zmiennej wiersz po wierszu.

W poniższym przykładzie pętla while odczyta /etc/passwd linia po linii i wydrukuje każdą linię.

file=/etc/passwd while read -r line; do echo $line done < "$file"

Zamiast kontrolować pętlę while za pomocą warunku, używamy przekierowania wejściowego ( < "$file" ), aby przekazać plik do read który jest poleceniem sterującym pętlą. Pętla while będzie działać do momentu odczytania ostatniej linii.

Podczas czytania pliku wiersz po wierszu zawsze używaj read z opcją -r , aby zapobiec ukośnikowi odwrotnemu działającemu jako znak zmiany znaczenia.

Domyślnie polecenie read przycina wiodące / końcowe znaki białych znaków (spacje i tabulatory). Użyj opcji IFS= przed poleceniem read aby zapobiec temu zachowaniu

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

Złam i kontynuuj instrukcje

Do przerwania wykonywania pętli while można użyć instrukcji break i continu.

Oświadczenie o złamaniu

Instrukcja break kończy bieżącą pętlę i przekazuje kontrolę programu do polecenia następującego po zakończonej pętli. Zwykle służy do zakończenia pętli, gdy spełniony jest określony warunek.

W poniższym przykładzie wykonanie pętli zostanie przerwane, gdy bieżący iterowany element będzie równy 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Kontynuuj Instrukcja

Instrukcja Kontynuacja kończy bieżącą iterację pętli i przekazuje kontrolę programu do następnej iteracji pętli.

Poniżej, gdy bieżący iterowany element jest równy 2 instrukcja Kontynuacja spowoduje, że wykonanie powróci do początku pętli i przejdzie do następnej iteracji.

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Wniosek

Do tej pory powinieneś dobrze rozumieć, jak korzystać z bash while loop.

terminal pętli bash