12 Bash dla pętli przykłady skryptów powłoki Linuksa

12 Bash dla pętli przykłady skryptów powłoki Linuksa

dostępne są dwa typy bash dla pętli. Jeden używa słowa kluczowego ” in ” z listą wartości, drugi używa składni podobnej do programowania w języku C.

Ten artykuł jest częścią naszej ciągłej serii samouczków bash.

To wyjaśnia obie metody bash for loop i dostarcza 12 różnych przykładów użycia pętli bash for w skryptach powłoki.
Dodaj ten artykuł do zakładek na przyszłość, ponieważ jest to jedyny artykuł, do którego będziesz musiał się odwoływać, jak używać bash dla pętli z przykładami.,

Metoda 1: Bash for loop using „in” and list of values

składnia:

for varname in listdo command1 command2 ..done

w powyższej składni:

  • for, in, do I done są słowami kluczowymi
  • „list” zawiera listę wartości. Lista może być zmienną, która zawiera kilka słów oddzielonych spacjami. Jeżeli w instrukcji for brakuje list, to pobiera on parametr pozycyjny, który został przekazany do powłoki.
  • varname to dowolna nazwa zmiennej Bash.

w tej formie Instrukcja for wykonuje polecenia zamknięte w ciele, raz dla każdego elementu na liście., Na przykład, jeśli lista wartości zawiera 5 pozycji, pętla for zostanie wykonana łącznie 5 razy, raz dla każdego elementu na liście. Bieżąca pozycja z listy będzie każdorazowo zapisywana w zmiennej „varname”poprzez pętlę. Ta „varname” może być przetwarzana w ciele pętli for.

Metoda 2: Bash dla pętli używając składni podobnej do C

druga forma pętli for jest podobna do pętli for w języku programowania „C”, która ma trzy wyrażenia (inicjalizacja, warunek i updation).,

for (( expr1; expr2; expr3 ))do command1 command2 ..done

w powyższym bash dla składni poleceń,

  • przed pierwszą iteracją, expr1 jest oceniany. Jest to zwykle używane do inicjalizacji zmiennych dla pętli.
  • wszystkie polecenia pomiędzy do I done są wykonywane wielokrotnie, aż wartość expr2 będzie prawdziwa.
  • po każdej iteracji pętli jest obliczane expr3. Jest to zwykle używane do zwiększania licznika pętli.

poniższe 12 przykładów pokazuje, jak bash dla pętli na różne sposoby.,

wartości statyczne dla listy po słowie kluczowym „in”

w poniższym przykładzie lista wartości (pon, wt, śr, Czw I PT) jest podawana bezpośrednio po słowie kluczowym „in” w pętli bash for.

Uwaga: lista wartości nie powinna być oddzielona przecinkami(pon ,wt, śr, czw, pt). Przecinek będzie traktowany jako część wartości. tj. zamiast „Mon”, użyje „Mon” jako wartości, jak pokazano w poniższym przykładzie.

Uwaga: lista wartości nie powinna być zamknięta w podwójnym cudzysłowie. („Pon Wt Śr Cz Pt”)., Jeśli załączysz cudzysłów, będzie on traktowany jako pojedyncza wartość (zamiast 5 różnych wartości), jak pokazano w poniższym przykładzie.

$ cat for1-wrong2.shi=1for day in "Mon Tue Wed Thu Fri"do echo "Weekday $((i++)) : $day"done$ ./for1-wrong2.shWeekday 1 : Mon Tue Wed Thu Fri

zmienna dla listy po słowie kluczowym” in „

zamiast podawać wartości bezpośrednio w pętli for, można zapisać wartości w zmiennej i użyć zmiennej w pętli for po słowie kluczowym” in”, Jak pokazano w poniższym przykładzie.

Uwaga: jako najlepszą praktykę należy zawsze cytować zmienne bash, gdy je odsyłasz. Istnieje kilka wyjątków od tej zasady najlepszych praktyk. To jeden z nich., Jeśli dwukrotnie zacytujesz zmienną w pętli for, lista wartości będzie traktowana jako pojedyncza wartość. Wielu ludzi wpada w tę pułapkę. Bądź ostrożny i nie podawaj dwukrotnie cudzysłowu zmiennej w pętli for.

nie określaj listy; pobieraj ją z parametrów pozycyjnych

Jeśli nie podasz słowa kluczowego „in”, po którym następuje lista wartości w pętli bash for, użyje ona parametrów pozycyjnych(tzn. argumentów przekazywanych do skryptu powłoki).

Uwaga: Należy zachować ostrożność podczas korzystania z tej metody. Nie należy umieszczać słowa kluczowego „in” w pętli for., Jeśli pozostawisz słowo kluczowe ” w ” bez żadnych wartości, nie użyje parametru pozycyjnego, jak pokazano poniżej. Nie wejdzie do pętli. pętla for nigdy nie zostanie wykonana, jak pokazano w poniższym przykładzie.

$ cat for3-wrong.shi=1for day indo echo "Weekday $((i++)) : $day"done$ ./for3-wrong.sh Mon Tue Wed Thu Fri

Uwaga: Zapoznaj się z naszym wcześniejszym artykułem, aby dowiedzieć się więcej o parametrach pozycyjnych bash.

wyjście polecenia Unix jako wartości listy po słowie kluczowym „in”

Możesz użyć wyjścia dowolnego polecenia UNIX / Linux jako listy wartości do pętli for, załączając polecenie w back-ticks ` ` jak pokazano poniżej.,

Pętla przez pliki i katalogi w pętli for

aby pętla przez pliki i katalogi w określonym katalogu, wystarczy cd do tego katalogu i dać * w pętli for, jak pokazano poniżej.

poniższy przykład przełączy wszystkie pliki i katalogi znajdujące się w katalogu domowym.

użycie * w pętli bash for jest podobne do globbingu plików, którego używamy w linuksowym wierszu poleceń, gdy używamy polecenia ls (i innych poleceń).

na przykład, poniżej zostaną wyświetlone wszystkie pliki i katalogi znajdujące się w katalogu domowym., Jest to pojęcie, które jest używane w powyższym for5.sh przykład.

cd ~ls *

poniżej zostaną wyświetlone wszystkie *.plik conf zaczynający się od a, b, lub, c lub d w katalogu / etc.

$ ls -1 /etc/*.conf/etc/asound.conf/etc/autofs_ldap_auth.conf/etc/cas.conf/etc/cgconfig.conf/etc/cgrules.conf/etc/dracut.conf

ten sam argument, który jest użyty w powyższym poleceniu ls, może być użyty w pętli bash for, jak pokazano w poniższym przykładzie.

wyłamać się z pętli for

możesz wyłamać się z pętli for używając polecenia 'break', jak pokazano poniżej.,

$ cat for6.shi=1for day in Mon Tue Wed Thu Frido echo "Weekday $((i++)) : $day" if ; then break; fidone$ ./for6.shWeekday 1 : MonWeekday 2 : Tue

Kontynuuj od góry pętli for

pod pewnymi warunkami możesz zignorować resztę poleceń w pętli for i kontynuować pętlę od góry ponownie (dla następnej wartości na liście), używając polecenia Kontynuuj, jak pokazano poniżej.

poniższy przykład dodaje „(WEEKEND)” Do Soboty i niedzieli, a „(dzień powszedni)” do reszty dni.

Bash for loop używając składni programu C

Ten przykład używa drugiej metody bash for loop, która jest podobna do składni C for loop., Poniższy przykład generuje 5 liczb losowych za pomocą pętli bash w stylu C for.

9. Infinite Bash dla pętli

Jeśli nie podasz początku, warunku i przyrostu w stylu bash C dla pętli, będzie to nieskończona pętla. Musisz nacisnąć Ctrl – C, aby zatrzymać pętlę.

$ cat for9.shi=1;for (( ; ; ))do sleep $i echo "Number: $((i++))"done

jak powiedzieliśmy powyżej, naciśnij Ctrl-C, aby wyłamać się z tego przykładu Bash infinite for loop.,

$ ./for9.shNumber: 1Number: 2Number: 3

korzystanie z przecinka w stylu bash C dla pętli

w stylu Bash C pętli, oprócz przyrostu wartości, która jest używana w warunku, można również zwiększyć niektóre inne wartości, jak pokazano poniżej.

w sekcji initialize i sekcji increment pętli w stylu bash C dla pętli można mieć wiele wartości, oddzielając przecinkiem, jak pokazano poniżej.

następująca pętla for jest wykonywana w sumie 5 razy, używając zmiennej i. jednakże zmienna j zaczyna się od 5 i jest inkrementowana o 5 za każdym razem, gdy pętla zostanie wykonana.,

$ cat for10.shfor ((i=1, j=10; i <= 5 ; i++, j=j+5))do echo "Number $i: $j"done$ ./for10.shNumber 1: 10Number 2: 15Number 3: 20Number 4: 25Number 5: 30

zakres liczb po słowie kluczowym „in”

można zapętlić za pomocą zakresu liczb w pętli for „in” za pomocą rozszerzenia nawiasów.

poniższy przykład pętli przez 10 razy używając wartości od 1 do 10.

$ cat for11.shfor num in {1..10}do echo "Number: $num"done$ ./for11.shNumber: 1Number: 2Number: 3Number: 4Number: 5...

zakres liczb z przyrostami po słowie kluczowym „in”

poniższy przykład pętli przez 5 razy używając wartości od 1 do 10, z przyrostem 2. tzn. zaczyna się od 1 i zwiększa się o 2, aż osiągnie 10.,

$ cat for12.shfor num in {1..10..2}do echo "Number: $num"done$ ./for12.shNumber: 1Number: 3Number: 5Number: 7Number: 9

PS: nie zapomnij dodać tego artykułu do zakładek w przyszłości.

> dodaj swój komentarz

jeśli podobał Ci się ten artykuł, może ci się spodobać..

  1. 50 samouczków systemu Linux Sysadmin
  2. 50 najczęściej używanych poleceń systemu Linux (z przykładami)
  3. Top 25 najlepszych narzędzi do monitorowania i debugowania wydajności systemu Linux
  4. Mamusiu, znalazłem!,l>
  • Awk Introduction – 7 Awk Print Examples
  • Advanced Sed Substitution Examples
  • 8 Essential Vim Editor Navigation Fundamentals
  • 25 Most Frequently Used Linux IPTables Rules Examples
  • Turbocharge PuTTY with 12 Powerful Add-Ons


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *