logo

Skrypty Bash – pętla While

A pętla while to instrukcja, która wykonuje iterację po bloku kodu, aż określony warunek zostanie oceniony jako fałszywy. Możemy użyć tej instrukcji lub pętli w naszym programie, jeśli nie wiemy, ile razy warunek będzie miał wartość true, zanim uzyska wartość false.

Spis treści



Składnia pętli while w skryptach BASH

while [ condition ]; do  # statements  # commands done>

Jeśli warunek jest spełniony, polecenia znajdujące się w bloku while zostaną wykonane i powtórzone po sprawdzeniu warunku. Również jeśli warunek jest fałszywy, instrukcje wewnątrz bloku while są pomijane, a instrukcje po bloku while są wykonywane.

Przykład pętli z użyciem instrukcji while w systemie Linux

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash



a=7
podczas gdy [ $a -gt 4 ];
Do
echo $a
((A-))
zrobione
echo Wyjdź z pętli

Wyjaśnienie:

  • #!/usr/bin/bash> : Ta linia nazywa się shebang i wskazuje ścieżkę do interpretera, który powinien zostać użyty do wykonania skryptu. W tym przypadku określa, że ​​należy użyć powłoki Bash.
  • a=7> : Inicjuje zmienną o nazwiea>z wartością 7.
  • while [ $a -gt 4 ];> : Rozpoczyna pętlę while, która trwa tak długo, jak wartośća>jest większa niż 4.
  • do> : Zaznacza początek bloku kodu, który ma zostać wykonany w pętli while.
  • echo $a> : Drukuje bieżącą wartość zmienneja>do konsoli.
  • ((a--))> : Zmniejsza wartośća>przez 1. Jest to skrócony sposób pisaniaa=$((a - 1))>.
  • done> : Zaznacza koniec bloku kodu pętli while.
  • echo 'Out of the loop'> : Wypisuje wyjście z pętli do konsoli po zakończeniu pętli while.
Podczas gdy pętla w systemie Linux

Podczas gdy pętla w systemie Linux



Podsumowując, ten skrypt inicjuje zmienną ` a`> z wartością 7, następnie wchodzi w pętlę while, która trwa tak długo, jak ` a`> jest większa niż 4. Wewnątrz pętli wypisuje bieżącą wartość ` a`> i zmniejsza ją o 1 w każdej iteracji. Raz ` a`> osiągnie wartość 4 lub mniej, pętla zakończy działanie, a skrypt wypisuje na konsoli opcję Out of the Loop.

Czytanie pliku za pomocą pętli while

Plik z pętlą while możemy odczytać w BASH. Analizując określone parametry do warunku pętli while, możemy iterować po pliku linia po linii lub według innych grup, takich jak znaki lub słowa.

polecenia systemu Linux tworzą folder

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash

plik=temp.txt
podczas czytania -r linia;
Do
echo $linia
gotowe <$plik

Wyjaśnienie:

  • #!/usr/bin/bash> : Ta linia shebang określa, że ​​do interpretacji skryptu należy użyć powłoki Bash.
  • file=temp.txt> : Przypisuje do zmiennej ciąg znaków temp.txtfile>, reprezentujący nazwę pliku do odczytania.
  • while read -r line;> : Inicjuje pętlę while, która odczytuje każdą linię z określonego pliku.
  • do> : Zaznacza początek bloku kodu, który ma zostać wykonany w pętli while.
  • echo $line> : Drukuje zawartość zmiennejline>, który reprezentuje bieżący wiersz odczytywany z pliku do konsoli.
  • done> : Zaznacza koniec bloku kodu pętli while.
  • <'$file'> : Przekierowuje wejście pętli while tak, aby pochodziło z określonego pliku, w tym przypadku temp.txt.

Podsumowując, skrypt ten odczytuje każdą linię z pliku temp.txt i wypisuje ją na konsoli, aż w pliku nie będzie już więcej linii. The-r>opcja zread>polecenie służy do zapewnienia, że ​​ukośniki odwrotne na wejściu będą traktowane jak znaki dosłowne.

przeczytaj plik za pomocą instrukcji while w systemie Linux

przeczytaj plik za pomocą instrukcji while w systemie Linux

Polecenie read służy do pobrania linii lub znaków z pliku. Polecenie read jest przekazywane z argumentem -r, który ignoruje ucieczkę znaków, jeśli pojawia się , a zatem jest analizowany jako jego. Czytamy linię z pliku wymienionego po instrukcji Does. Polecenie read odczytuje linię ze wspomnianego pliku, a pętle while kończą się, gdy zostanie odczytana ostatnia linia z pliku (nie ma już linii do odczytania).

W ten sposób możemy odczytać zawartość pliku za pomocą pętli while w BASH.

Nieskończona pętla while

Aby utworzyć nieskończoną pętlę za pomocą instrukcji pętli while. Nie musimy umieszczać żadnego warunku w pętli while, dlatego pętla iteruje w nieskończoność. Poniżej znajduje się przykład nieskończonej pętli while:

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash
chwila :
Do
echo Nieskończona pętla
# Możemy nacisnąć Ctrl + C, aby wyjść ze skryptu
zrobione

Wyjaśnienie:

  • #!/usr/bin/bash> : Linia shebang określa, że ​​do interpretacji skryptu należy użyć powłoki Bash.
  • while :> : Inicjuje nieskończoną pętlę. The:>(dwukropek) to wbudowane polecenie powłoki, które zawsze zwraca wartość true, skutecznie tworząc nieskończoną pętlę.
  • do> : Zaznacza początek bloku kodu, który ma zostać wykonany w nieskończonej pętli.
  • echo 'An Infinite loop'> : Wypisuje na konsoli ciąg An Infinite Loop w każdej iteracji pętli.
  • # We can press Ctrl + C to exit the script> : To jest komentarz wskazujący, że możesz przerwać skrypt, naciskając Ctrl + C w terminalu. Ctrl + C to powszechny sposób przerywania i kończenia uruchomionych skryptów w terminalu.
  • done> : Oznacza koniec bloku kodu dla nieskończonej pętli.

Podsumowując, ten skrypt tworzy nieskończoną pętlę, która w sposób ciągły wyświetla na konsoli komunikat Nieskończona pętla. Pętlę można przerwać i zakończyć skrypt, naciskając Ctrl + C w terminalu.

Nieskończona pętla przy użyciu instrukcji While w systemie Linux

Nieskończona pętla przy użyciu instrukcji While w systemie Linux

Zatem pętla while w skrypcie będzie iterować przez nieskończony czas. Możemy ręcznie przerwać pętlę lub skrypt za pomocą CTRL + C.

Pętla while do iteracji ustaloną liczbę razy

Możemy użyć pętli while do iteracji ustaloną liczbę razy, możemy ustawić warunek na -le lub mniejszy od liczby, a pętla będzie powtarzać, aż iterator będzie mniejszy lub równy liczbie podanej w warunek. Musimy także ręcznie zwiększać iterator, aby iterator pętli tykał, w przeciwnym razie pętla będzie trwać w nieskończoność.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash

ja=1

# liczba 4 może być granicą

# wykonaj iterację pętli

podczas gdy [ $i -le 4 ];
Do
echo $i
((i++))
zrobione

aktor Saira Banu

Wyjaśnienie:

  • #!/usr/bin/bash> : Linia shebang określa, że ​​do interpretacji skryptu należy użyć powłoki Bash.
  • i=1> : Inicjuje zmienną o nazwiei>z wartością 1.
  • while [ $i -le 4 ];> : Inicjuje pętlę while, która trwa tak długo, jak wartośći>jest mniejsza lub równa 4.
  • do> : Zaznacza początek bloku kodu, który ma zostać wykonany w pętli while.
  • echo $i> : Drukuje bieżącą wartość zmienneji>do konsoli.
  • ((i++))> : Zwiększa wartośći>przez 1. Jest to skrócony sposób pisaniai=$((i + 1))>.
  • done> : Zaznacza koniec bloku kodu pętli while.
pętla while w systemie Linux

pętla while w systemie Linux

W powyższym przykładzie widzimy, że pętla iteruje określoną liczbę razy. Ponieważ zainicjowaliśmy licznik na 1, a warunkiem jest powtarzanie pętli, aż iterator będzie mniejszy lub równy liczbie w tym przypadku 4. W ten sposób możemy zmienić liczbę w warunku zgodnie z naszymi wymaganiami.

Przeczytaj argument wiersza poleceń z opcjami getopts

Możemy użyć opcji get ops, aby odczytać dane wejściowe z wiersza poleceń, a jeśli istnieje wiele argumentów, możemy je sprawdzić i przeanalizować jeden po drugim, używając pętli while. getopts to narzędzie do pobierania danych wejściowych od użytkownika z wiersza poleceń. Możemy mieć wiele opcji do analizowania z wiersza poleceń, a używając pętli getopts i while możemy stworzyć profesjonalnie wyglądający program do wprowadzania danych przez użytkownika.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/bin/bash

podczas gdy getopts n:a: OPT
Do
przypadek ${OPT} w
n) nazwa=${OPTARG} ;;
a) wiek=${OPTARG} ;;
*) echo Nieprawidłowa opcja
wyjście 1 ;;
esac
zrobione
printf Nazywam się $imię i mam $lat lat

Wyjaśnienie:

  • #!/bin/bash> : Linia shebang określa, że ​​do interpretacji skryptu należy użyć powłoki Bash.
  • while getopts n:a: OPT> : Inicjuje pętlę, która używagetopts>do analizowania opcji wiersza poleceń. Podane opcje ton>Ia>, po których oczekuje się, że nastąpi argument.
  • do> : Zaznacza początek bloku kodu, który ma zostać wykonany w pętli.
  • case '${OPT}' in> : Rozpoczyna instrukcję case, która ocenia wartość opcji napotkanej przezgetopts>.
  • n) name=${OPTARG};;> : Jeśli jest taka opcja-n>, przypisuje do zmiennej wartość odpowiedniego argumentuname>.
  • a) age=${OPTARG};;> : Jeśli jest taka opcja-a>, przypisuje do zmiennej wartość odpowiedniego argumentuage>.
  • *) echo 'Invalid option'> : Jeśli napotkana zostanie nieprawidłowa opcja, wypisuje na konsoli komunikat o błędzie.
  • exit 1;;> : Kończy skrypt z niezerowym kodem stanu, wskazującym błąd.
  • esac> : Kończy instrukcję case.
  • done> : Zaznacza koniec bloku kodu pętli.
  • printf 'My name is $name and am $age years old '> : Drukuje sformatowaną wiadomość na konsoli, używając wartości ` name`> i ` age`> uzyskanych z opcji wiersza poleceń.
Pętla while w systemie Linux

Pętla while w systemie Linux

W tym przypadku mamy dwie opcje, a mianowicie imię i wiek, możesz mieć wiele opcji. Musimy określić, której opcji użyjemy instrukcji switch case oraz z wiersza poleceń, używając opcji -shorthand. W tym przypadku skorzystaliśmy -n dla nazwy I -a jak na wiek . Mamy również opcję sprawdzania wielkości liter domyślnych lub nieprawidłowych, aby nie analizować błędnych argumentów. Wartość opcji możemy przypisać za pomocą OPTARG zmienna, która analizuje wartość podaną opcji.

Pętla while służy tutaj do iteracji, dopóki z wiersza poleceń nie zostaną przekazane żadne opcje. Sprawdzamy opcję -n i -a i wykonujemy iterację, aż zostanie naciśnięty klawisz powrotu karetki lub klawisz Enter i nie będzie już żadnych dalszych opcji do przeanalizowania.

Pętla while w stylu C

Możemy używać pętli while w stylu C w BASH, zmienne muszą być oceniane w stylu BASH, ale ogólna składnia przypomina C. Możemy używać operatorów takich jak ,<= itd. w warunku pętli while i stąd nazywa się pętlą while w stylu C.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim c-style-while.sh>

#!/bin/bash
ja=0
podczas gdy ((i <12))
Do
echo $i
((i+=2))
zrobione

w stylu c

w stylu c

W tym przykładzie widzimy, że pętla while zawiera warunek z operatorami innymi niż bash, takimi jak -le, -ge itp. Zamiast tego używamy w warunku operatorów w stylu C. Pozostała część pętli to pętla podstawowa, tak jak w BASH, zmienna lub iterator i jest zwiększana o dwa, jak widać w ostatniej instrukcji treści pętli. W ten sposób pętla iteruje ponad 5 razy.

Pętla while do wykonywania operacji na pliku

Możemy wykonywać operacje na pliku, np. czytać tylko określoną część pliku. Jeśli mamy kolumny sformatowane w określony sposób, możemy użyć zmiennych, aby je przypisać i wydrukować w jednym wierszu czasu danych.

Oto przykładowa nazwa pliku wh.txt

vim wh.txt>

tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

logika pierwszego rzędu
vim file-while.sh>

Wydano typ języka

Generał Pythona 1991

Sieć JavaScript 1995

Java mobilna 1995

Rdza osadzona 2010

Przejdź do backendu 2007

tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim file-while.sh>

#!/bin/bash

podczas czytania a b c
Do
echo $b – $a
zrobione

Pętla while w systemie Linux

Pętla while w systemie Linux

W tym przykładzie mamy trzy wiersze, zawartość odczytujemy przypisując je do zmiennych a, b i c, może to być cokolwiek chcesz, ale pamiętaj, aby użyć ich w treści pętli. Możemy wybrać konkretną kolumnę, np. b i a, i wydrukować ją lub wykonać na niej dowolne operacje. Nie zostanie to jednak odzwierciedlone w pliku, ponieważ są to tylko lokalne zmienne skryptu.

Zapis do pliku przy użyciu pętli while

Możemy zapisywać do pliku dane wprowadzone przez użytkownika w pętli while. Możemy użyć pętli while do iteracji, aż do ręcznego wyjścia z pętli za pomocą CTRL + D, zapisując zmiany w pliku lub CTRL + C, aby uniknąć zapisu do pliku. Używamy polecenia read, aby wprowadzić tekst z wiersza poleceń i przeanalizować go do pliku.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim write-wh.sh>

#! /bin/bash

plik=wh.txt
echo Wprowadź zawartość do pliku $file
podczas czytania linii
Do
echo $linia>> $plik
zrobione

pętla while w systemie Linux

pętla while w systemie Linux

Zatem na podstawie powyższego przykładu mogliśmy wprowadzić tekst do pliku za pomocą pętli while i polecenia odczytu. Do wyjścia z pętli i zapisania zmian w pliku używamy klawiszy CTRL+D, natomiast do wyjścia z pętli bez zapisywania czegokolwiek do pliku używamy klawiszy CTRL+C. Wprowadzamy zatem tekst z wiersza poleceń do pliku tekstowego za pomocą polecenia read i pętli while.

Przerwij i kontynuuj używanie while Loop

Przerwanie i kontynuacja są niezbędne w programie obsługującym instrukcje pętlowe, ponieważ kontrolują przebieg instrukcji pętlowych bez żadnych wyraźnych warunków.

Instrukcja Break w pętli While

Instrukcji break używamy do wyjścia z pętli bez czekania, aż warunek pętli while przyjmie wartość false. Tej instrukcji można użyć w bloku pętli. Można tego użyć do wyjścia z nieskończonej pętli z warunkiem programowym wewnątrz pętli, a tym samym do utrzymania kontroli nad pętlą.

Na przykład mamy skrypt, który liczy od 1 i na zawsze. Możemy jednak programowo przerwać pętlę, używając instrukcji break znajdującej się w treści pętli z warunkiem.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash

ja=1
chwila :
Do
echo $i
jeśli [ $i -eq 20 ]; Następnie
echo To jest koniec pętli
przerwa
Być
((i++))
zrobione

Instrukcja break while w systemie Linux

Instrukcja break while w systemie Linux

Ze skryptu i wykonania widzimy, że udało nam się przerwać lub wyjść z nieskończonej pętli za pomocą instrukcji warunkowej i instrukcji break. Zatem instrukcja break służy do uzyskania przepływu sterowania programem/skryptem z pętli while w celu wyrwania się z pętli bez uzyskania przez warunek pętli wartości fałszywej.

Kontynuuj instrukcję w pętli While

Możemy użyć instrukcjicontinue, aby wykonać przeciwieństwo instrukcji break. Przeskoczy na początek bloku pętli i wykona ponowną iterację. Można tego użyć do pominięcia pewnych poleceń w określonych warunkach, co pozwala na zmianę przebiegu pętli.

Na przykład, jeśli mamy zmienną zainicjowaną na 1 i chcemy wyświetlić tylko liczby podzielne przez pięć lub według określonego wzoru po spełnieniu warunku, możemy w tym celu użyć instrukcjicontinue. Umożliwia to iterację po pętli w pożądany sposób.

Najpierw tworzymy plik tekstowy za pomocą edytora tekstu w systemie Linux, w tym przypadku używamy edytora tekstu `vim`.

vim while.sh>

#!/usr/bin/bash

ja=1
podczas gdy [ $i -lt 30 ];
Do
((i++))
if [[ $(( $i % 5 )) -ne 0 ]];
Następnie
Kontynuować
Być
echo $i
zrobione

Kontynuuj instrukcję w pętli While w systemie Linux

Kontynuuj instrukcję w pętli While w systemie Linux

Jak widać instrukcjacontinue przeskakuje na początek bloku i rozpoczyna wykonywanie poleceń, pomijając kolejne polecenia wewnątrz bloku. Pętla while iteruje tylko dla wartości zmienna I jest mniejsza niż 30, zatem warunek if sprawdza, czy zmienna I jest podzielna przez 5, a jeśli nie, iterujemy od nowa, używając opcjikontynuuj i zwiększaj wartość zmiennej i. The zmienna I zostaje powtórzone tylko wtedy, gdy jest podzielne przez 5, zatem warunek if jest oceniany jako fałszywy i w normalnym przebiegu pętli nie spotykamy instrukcjicontinue ani carry. Ma to na celu uniknięcie rejestrowania każdej liczby i wyświetlenie tylko tych liczb, które nie są zgodne ze wzorcem lub warunkiem w instrukcji if lub innych instrukcjach warunkowych.

Często zadawane pytania

1. Co to jest ` while`> pętla w skryptach Bash?

Awhile>pętla to instrukcja przepływu sterowania w skryptach Bash, która umożliwia wielokrotne wykonanie określonego bloku kodu, o ile określony warunek jest spełniony. Pętla umożliwia automatyzację powtarzalnych zadań i jest podstawową konstrukcją w skryptach i programowaniu.

2. Jak działa składnia ` while`> wygląd pętli w Bash?

Podstawowa składnia awhile>pętla w Bashu wygląda następująco:

podczas gdy [warunek]
Do
# Kod, który ma zostać wykonany, gdy warunek jest spełniony
zrobione

` condition`> to test wykonywany przed każdą iteracją pętli. Jeśli warunek jest spełniony, wykonywany jest kod znajdujący się w pętli. Jeśli warunek jest fałszywy, pętla kończy się, a skrypt kontynuuje wykonywanie następnego polecenia po ` done`> oświadczenie.

3. Jaka jest rola ` (( ... ))`> skonstruuj w Bashu while> pętla?

` (( ... ))`> konstrukcja w Bash służy do operacji arytmetycznych. W kontekście ` while`> pętli, często wykorzystuje się ją do oceny warunków arytmetycznych.

Na przykład: ` ((i <10))> `>sprawdza, czy zmienna ` i`> jest mniejsza niż 10. Pozwala to na użycie wyrażeń arytmetycznych bezpośrednio w warunku pętli, co czyni je szczególnie przydatnymi w przypadku porównań numerycznych.

mapa w Javie

4. Jak utworzyć nieskończoną pętlę za pomocą ` while`> w Bashu?

Nieskończoną pętlę w Bash można utworzyć, podając warunek, który zawsze ma wartość true.

Na przykład:

choć prawdziwe
Do
# Kod nieskończonej pętli
zrobione

Alternatywnie możesz użyć w warunku niezerowej stałej, np ` while [ 1 ]`> , aby osiągnąć ten sam rezultat. Nieskończone pętle są przydatne w sytuacjach, gdy wymagane jest ciągłe wykonywanie, aż do ręcznego przerwania.

Wniosek

W tym artykule omówiliśmy pętlę while skryptu BASH, która okazuje się wszechstronnym narzędziem do wielokrotnego wykonywania bloku kodu w oparciu o określony warunek. Podstawowa składnia polega na zdefiniowaniu warunku w nawiasach kwadratowych, co pozwala na elastyczne iteracje. W artykule omówiono różnorodne zastosowania pętli while, w tym odczytywanie plików, tworzenie nieskończonych pętli, stałe iteracje, analizowanie argumentów wiersza poleceń oraz korzystanie z instrukcji break icontinu. Od składni w stylu C po interaktywne pisanie plików, każdy przykład demonstruje możliwości adaptacji pętli w celu zaspokojenia szeregu potrzeb związanych z tworzeniem skryptów. Ten kompleksowy przegląd podkreśla znaczenie pętli while w skryptach BASH, zapewniając solidny mechanizm kontrolowanego powtarzania i wydajnego wykonywania kodu.