Jak używać bash do pętli w Linux

- 2387
- 99
- Seweryn Augustyniak
W językach programowania, Pętle są niezbędnymi komponentami i są używane, gdy chcesz powtarzać kod w kółko, dopóki nie zostanie spełniony określony warunek.
W Grzmotnąć Skrypty, Pętle odgrywać tę samą rolę i służą do automatyzacji powtarzających się zadań, tak jak w językach programowania.
W Grzmotnąć Skrypty, istnieją 3 rodzaje Pętle: dla pętli, podczas pętli, I aż do pętli. Te trzy są używane do iterowania listy wartości i wykonania danego zestawu poleceń.
W tym przewodniku skupimy się na Bash for Loop w Linux.
Bash dla składni pętli
Jak wspomniano wcześniej, dla pętli iteruje w zakresie wartości i wykonuje zestaw poleceń.
Dla pętli przyjmuje następującą składnię:
Dla zmiennej nazwy wartości wartości 1 wartość 2 Wartość 3… n do command1 Command2 Commandn
Sprawdźmy teraz kilka przykładowych zastosowań Bash dla pętli.
Bash proste dla pętli
W najprostszej formie, Dla pętli przyjmuje następujący podstawowy format. W tym przykładzie zmienna N
Itera nad grupą wartości numerycznych zamkniętych w kręconych aparatach ortodontycznych i drukuje swoje wartości do stdout.
dla n w 1 2 3 4 5 6 7; echo $ n

Bash for Loop z zakresem
W poprzednich przykładach wyraźnie wymieniliśmy wartości, które są iterowane dla pętli, który działa dobrze. Możesz jednak tylko wyobrazić sobie, jak uciążliwe i czasochłonne zadanie byłoby, gdybyś był na przykład iteracyjny, sto wartości. To zmusiłoby do wpisania wszystkich wartości od 1 do 100.
Aby rozwiązać ten problem, określ zakres. Aby to zrobić, określ liczbę, aby rozpocząć i zatrzymać się oddzielone dwoma okresami.
W tym przykładzie 1 jest pierwszą wartością, a 7 to ostatnia wartość w zakresie.
#!/bin/bash dla n in 1… 7; echo $ n
Po wykonaniu skryptu powłoki wszystkie wartości w zakresie są wymienione, podobnie jak to, co mieliśmy Proste pętle.

Dodatkowo możemy uwzględnić wartość na końcu zakresu, który spowoduje dla pętli iterować wartości w krokach przyrostowych.
Poniższy skrypt Bash drukuje wartości między 1 a 7 z 2 krokami przyrostowymi między wartościami od pierwszej wartości.
#!/bin/bash dla n in 1… 7… 2; echo $ n

Z powyższego przykładu widać, że pętla zwiększył wartości wewnątrz klastrowych klamrów o 2 wartości.
Bash for Loops z tablicami
Możesz również łatwo iterować poprzez wartości zdefiniowane w tablicy za pomocą Dla pętli. W poniższym przykładzie dla pętli iteruje wszystkie wartości wewnątrz Tablica owoców i drukuje je na stdout.
#!/bin/bash owoce = („Blueberry” „brzoskwinia” „mango” „ananas”) dla n in $ owoce [@]; echo $ n

@
Operator uzyskuje dostęp lub jest skierowany do wszystkich elementów. To umożliwia iterowanie wszystkich elementów jeden po drugim.
Ponadto możesz uzyskać dostęp do jednego elementu, określając jego pozycję w tablicy.
Na przykład, aby uzyskać dostęp do „mango”Element, wymień @
Operator z położeniem elementu w tablicy (pierwszy element zaczyna się od 0, więc w tym przypadku „mango”Zostanie oznaczony przez 2).
Tak wygląda pętla.
#!/bin/bash owoce = („blueberry” „brzoskwinia” „mango” „ananas”) dla n in $ owoce [2]; echo $ n

Bash C-Styled dla pętli
Możesz użyć zmiennych wewnątrz pętli, aby iterować w zakresie elementów. Tam jest C-stypowe dla pętli Wejdź. Poniższy przykład ilustruje Style C dla pętli który drukuje listę wartości numerycznych od 1 do 7.
#!/bin/bash n = 7 dla (n = 1; n<=$n ; n++ )); do echo $n done

Bash C-Styled dla pętli z instrukcjami warunkowymi
W środku możesz dołączyć instrukcje warunkowe C-stypowe dla pętli. W poniższym przykładzie dołączyliśmy instrukcję IF-ELSE, która sprawdza i drukuje równe i nieparzyste liczby między 1 a 7.
#!/bin/bash dla ((n = 1; n<=7; n++ )) do # Check if the number is even or not if (( $n%2==0 )) then echo "$n is even" else echo "$n is odd" fi done

Użyj instrukcji „Kontynuuj” z Bash dla pętli
''Kontynuować„Instrukcja to wbudowane polecenie, które kontroluje sposób działania skryptu. Oprócz scenariuszy Bash jest również używany w językach programowania, takich jak Python i Java.
Kontynuuj oświadczenie zatrzymuje bieżącą iterację w pętla Po spełnieniu określonego warunku, a następnie wznowi iterację.
Weź pod uwagę dla pętli pokazane poniżej.
#!/bin/bash dla n in 1… 10 do jeśli [[$ n -eq '6']], a następnie echo „cel $ n został osiągnięty” kontynuuj fi echo $ n

To właśnie robi kod:
- Linia 2: Oznacza początek pętli i iterować zmienną n od 1 do 10.
- Linia 4: Sprawdza wartość n, a jeśli zmienna jest równa 6, skrypt przypomina wiadomość do stdout i ponownie uruchamia pętlę przy następnej iteracji w wierszu 2.
- Linia 9: Drukuje wartości na ekranie tylko wtedy, gdy warunek w wierszu 4 jest fałszywy.
Poniżej znajduje się oczekiwane dane wyjściowe po uruchomieniu skryptu.

Użyj instrukcji „Break” z Bash dla pętli
'przerwa' stwierdzenie, jak sama nazwa wskazuje, zatrzymuje lub kończy iterację, gdy stan jest spełniony.
Weź pod uwagę Dla pętli poniżej.
#!/bin/bash dla n in 1… 10 do jeśli [[$ n -eq '6']], a następnie echo „cel $ n został osiągnięty„ Break fi echo $ n dokonano echo „wszystko zrobione”

To właśnie robi kod:
- Linia 2: Oznacza początek pętli i iterować zmienną n od 1 do 10.
- Linia 4: Sprawdza wartość n, a jeśli zmienna jest równa 6, skrypt przypomina wiadomość do stdout i wstrzymuje iterację.
- Linia 9: Drukuje liczby na ekranie tylko wtedy, gdy warunek w wierszu 4 jest fałszywy.
Ze wyjścia widać, że pętla zatrzymuje się, gdy zmienna spełnia warunek pętli.

Wniosek
To był samouczek o Bash do pętli. Mamy nadzieję, że uznałeś to za wnikliwe. Zapraszam do zważenia ze swoją opinią.
- « Jak zainstalować monitorowanie Nagios w Rhel, Rocky i Almalinux
- Najlepsze narzędzia do tworzenia wypełnienia formularzy PDF w Linux »