Aby zrozumieć ten artykuł, czytelnik powinien już znać proste polecenia bash. Wszelkie niepotrzebne polecenie Bash użyte w tym artykule jest wyjaśnione. Nie zapominaj, że polecenia BASH można zapisać w pliku tekstowym, a plik tekstowy może uruchomić poprzez wpisanie nazwy pliku (poprzedzonego ścieżką) na terminalu, a następnie naciśnięcie Enter. Nie zapomnij także pozwolić sobie na uruchomienie pliku z czymś takim:
sudo chmod +x
Treść artykułu
Podstawy pętli bash
Bash do/gotów pętlę
Rozważ następujący kod:
Niech n = 0
do [„$ n” -eq 5]; Do
Echo $ n
((++ n))
zrobione
Wyjście to:
0
1
2
3
4
Po rozpoczęciu programu zmienna n jest zadeklarowana, a zero przypisuje się do niego. Dwie polecenia przed „gotowym” są wykonywane 5 razy. ((++ n)) przyrosty n przez 1 dla każdej iteracji. Zwróć uwagę na pozycje zarezerwowanych słów „aż”, „do” i „gotowe”. Dwie polecenia są powtarzane, aż do stanu [„$ n” -eq 5]. W stanie „-eq” oznacza „równe”. Warunkiem jest to, że wartość n jest równa 5. Zauważ, że echem wartości zaczynają się od 0 do 4. Wynika to z faktu, że dla każdej iteracji warunek konstruktu jest sprawdzany, zanim ciało (dwa polecenia) konstrukcji zostanie wykonane. Jeśli warunek jest fałszywy, ciało nie zostanie wykonane. Zarezerwowane słowo „gotowe” powinno być zawsze wpisane w nowej linii.
Składnia dla pętli THE/GOD to:
aż do przeprowadzania testów; wykonują konsekwencje; zrobione
Drugi półklon nie jest konieczny, jeśli zarezerwowane słowo „wykonane” jest wpisane w nowej linii.
Jeśli warunek wychodzi z zero, co oznacza prawdziwe, ciało pętli jest wykonywane. Jeśli warunek wychodzi z liczbą większą niż zero, co oznacza fałszywe, ciało pętli nie jest wykonywane.
Bash While/Done Loop
Ta pętla jest podobna do pętli do/zrobionej, z tym wyjątkiem, że warunek musi zostać ponownie wyformowany. Obie konstrukty używają słowa zarezerwowanego „do”. Poniższy kod daje to samo wyjście, co wcześniej:
Niech n = 0
podczas gdy [„$ n” -lt 5]; Do
Echo $ n
((++ n));
zrobione
W stanie w kodzie „-LT” oznacza „mniej niż”. Składnia dla pętli While/Gan to:
podczas gdy komandary testowe; wykonują konsekwencje; zrobione
Bash for/Done Loop
Istnieją dwie składni dla pętli „for”, które są:
dla ((expr1; expr2; expr3)); DO Polecenia; zrobione
I
dla imienia [[w [słowa…]]; ] zrobić polecenia; zrobione
Poniższy kod wykorzystuje pierwszą składnię do uzyskania tego samego wyniku, co powyżej:
dla ((n = 0; n < 5; ++n)); do
Echo $ n
zrobione
W ((polecenie złożone pierwsze wyrażenie inicjuje zmienną N do zera. Kolejnym wyrażeniem jest warunek pobytu. Ostatnim wyrażeniem w poleceniu złożonym podwójnych nawiasów jest wyrażenie przyrostowe. Następnie jest ciało, które może składać się z więcej niż jednego polecenia, a następnie „gotowe”.
Druga składnia jest najlepiej używana z tablicą - patrz poniżej.
BASH BREAK I INT INDY Polecenia
przerwa
Wszystkie iteracje (powtarzające się wykonywanie ciała) przeznaczone do pętli niekoniecznie można wykonać. Polecenie Break można użyć do zatrzymania pozostałych iteracji. W poniższym kodzie iteracje zatrzymują się tuż po n jest równe 2.
dla ((n = 0; n < 5; ++n)); do
Echo $ n
if ((n == 2)); Następnie
przerwa
fi
zrobione
Wyjście to:
0
1
2
W tej pętli miały miejsce trzy iteracje.
Kontynuować
Iterację można pominąć za pomocą polecenia Kontynuuj. Poniższy kod to ilustruje:
dla ((n = 0; n < 5; ++n)); do
if ((n == 2)); Następnie
Kontynuować
fi
Echo $ n
zrobione
Wyjście to:
0
1
3
4
Iteracja do wyświetlania 2 została pominięta.
Polecenia przerwy i kontynuowania można również używać w do/gotowych i while/wykonanych pętlach.
Przydatne przykłady pętli
aż do/wykonać przykład pętli
Polecenie utworzenia pustego pliku tekstowego jest dotknięte. Poniższy skrypt utworzy puste pliki tekstowe w bieżącym katalogu roboczym, dopóki liczba utworzonych plików wynosi 4:
Niech i = 1
file = "myfile"
do [$ i -eq 5]; Do
filename = "$ plik $ i.tekst"
Dotknij nazwy pliku $
((++ i))
zrobione
Nazwy utworzonych plików powinny być myfile1.TXT, myfile2.TXT, myfile3.txt i myfile4.tekst.
Jedyny półklon w kodzie można pominąć, jeśli „do” zostanie wpisany w następnym wierszu.
While/wykonany przykład pętli
Poleceniem utworzenia pustego katalogu jest mkdir. Poniższy skrypt utworzy puste katalogi w bieżącym katalogu roboczym, dopóki liczba utworzonych katalogów wyniesie 4:
i = 1
dir = „mydir”
podczas gdy [$ i -lt 5]; Do
dirname = "$ dir $ i"
mkdir $ dirname
((++ i))
zrobione
Nazwa stworzonych katalogów powinna być mydir1, mydir2, mydir3 i mydir4.
Jedyny półklon w kodzie można pominąć, jeśli „do” zostanie wpisany w następnym wierszu.
dla przykładu pętli
Druga składnia dla wyżej wspomnianej powyżej pętli to:
dla imienia [[w [słowa…]]; ] zrobić polecenia; zrobione
Ta składnia jest lepiej używana z listą. Mówiąc prosto, składnia to:
dla zmiennej na liście; DO Polecenia; zrobione
Lista może być tablicą. Poniższe polecenie odczytuje wiersz wejściowy tekstu z terminala do tablicy ARR:
Przeczytaj ARR
W miarę uruchomienia skryptu, gdy osiągnie to polecenie, zatrzyma się (z migającym kursorem), aby użytkownik mógł wprowadzić wejście. Jeśli użytkownicy typu:
raz Dwa Trzy
W jednej linii i wchodzących naciskach, wówczas pierwszy element tablicy miałby słowo „jeden”, drugi miałby słowo „dwa”, a trzeci miałby „trzy”. Należy zauważyć, że wartości wejściowe zostały oddzielone przez przestrzenie.
Poniższy kod używa drugiej składni dla pętli do odczytu i wyświetlania wejścia do skryptu:
echo „Wpisz wartości i naciśnij Enter:”
Przeczytaj ARR
dla var in $ arr; Do
Echo $ var
zrobione
Jeśli dane wejściowe brzmiało:
raz Dwa Trzy
Wtedy wyjście byłoby:
jeden
dwa
trzy
Jedyny półklon w kodzie można pominąć, jeśli „do” zostanie wpisany w następnym wierszu.
Polecenie Bash Select
Polecenie Select nie jest tak naprawdę pętlą. Obejmuje to jednak iterację, której programista nie jest kodowany. Mówiąc prosto, składnia polecenia Wybierz:
Wybierz element w [Lista]
Do
[polecenia]
zrobione
Tutaj „Wybierz”, „in”, „do” i „gotowe” to zarezerwowane słowa. Jednym użyciem polecenia Select jest wyświetlanie elementów z listy do terminala. Poniższy skrypt ilustruje to:
Wybierz przedmiot w bananach, cytrynie, pomarańczowej, gruszce, ananasa
Do
przerwa
zrobione
Zwróć uwagę na użycie polecenia Break. Wyjście to:
1) banan,
2) cytryna,
3) Pomarańczowy,
4) Gruszka,
5) ananas
#?
Lista składa się z wartości banana, cytryny, pomarańczy, gruszki i ananasa. Te wartości zostały wyświetlone i ponumerowane. Symbol "#?”(I migający kursor obok) spodziewa się, że użytkownik wpisuje coś i naciśnij klawisz Enter. Wpisz wszystko, a następnie naciśnij klawisz Enter i wreszcie kończy wykonywanie skryptu.
Zauważ, że lista została wyświetlona jako menu, ponumerowane dla wyjścia. Dzięki temu użytkownik może wybrać element w menu, wpisując odpowiedni numer, obok „#?”, A następnie naciśnij klawisz Enter. Poniższy skrypt ilustruje, w jaki sposób Orange jest wybierany, wpisując numer 3:
Wybierz przedmiot w bananach, cytrynie, pomarańczowej, gruszce, ananasa
Do
Echo $ Odpowiedz
przerwa
zrobione
Wyświetlacz wyjściowy to:
#? 3
Następnie
3
Wniosek
Pętla w Bash jest konstruktem; Konstrukt to polecenie złożone. Ciało konstruktu ma co najmniej jedno polecenie. Na dzień dzisiejszy Bash ma tylko trzy pętle, które są aż do/gotowe, a/gotowe, i na/gotowe. Każda pętla używa zarezerwowanego słowa „zrób”. Po wpisaniu warunku „do” powinno być poprzedzone przez „;” lub być wpisane w następnym wierszu kodu. Każda pętla wymaga stanu. Do/Done/While/wykonane pętle są podobne. Główna różnica występuje podczas kodowania stanu.
Polecenie Select jest poleceniem złożonym, ale tak naprawdę nie jest pętlą. Pozwala użytkownikowi wybrać element z listy menu, gdy skrypt działa interaktywnie.
Polecenia przerwy i kontynuowania mogą być używane w pętli. Polecenie Break można użyć do zatrzymania iteracji. Z drugiej strony polecenie kontynuowania może być użyte do pominięcia iteracji.
To wszystko, co ma pętle wściekłe. Pozostała funkcja do zbadania jest „jak kodować warunki?". Zasługuje to na zupełnie inny artykuł i nie można go uwzględnić w tym. Zobacz artykuł na tej stronie, zatytułowany „Bash Warunek szczegółowo”, na temat kodowania warunków.
Chrys