logo

Skrypty Bash – pętla For

Ponieważ BASH jest językiem wiersza poleceń, mamy całkiem bogate w funkcje doświadczenie, które pozwala wykorzystać umiejętności programowania do wykonywania zadań w terminalu. Możemy używać pętli i instrukcji warunkowych w skryptach BASH do rozwiązywania powtarzalnych i trudnych problemów w prosty, programowy sposób. W tym artykule skupimy się na dla pętli w skryptach BASH.

W zależności od przypadku użycia i problemu, który próbuje zautomatyzować, istnieje kilka sposobów wykorzystania pętli.

  • Prosta pętla For
  • Pętla for oparta na zakresie
  • Iteracja tablicy dla pętli
  • Pętle w stylu C
  • Nieskończona pętla for

Prosta pętla For

Aby wykonać pętlę for, możemy napisać następującą składnię:



#!/bin/bash  for n in a b c; do  echo $n done>
  • W pierwszej iteracjin>przyjmuje wartość a i skrypt wypisuje a.
  • W drugiej iteracjin>przyjmuje wartość b i skrypt wypisuje b.
  • W trzeciej iteracjin>przyjmuje wartość c, a skrypt wypisuje c.

501

Powyższe polecenie wykona iterację po określonych elementach po W słowo kluczowe jedno po drugim. Elementami mogą być liczby, ciągi znaków lub inne formy danych.

Pętla for oparta na zakresie

Możemy używać pętli for opartych na zakresie. W tego typu pętli możemy określić liczbę rozpoczynającą się, kończącą i zwiększającą się przy każdej iteracji (opcjonalnie) instrukcji. Można to zrobić na dwa sposoby, tj. podając wartość przyrostu/zmniejszenia i domyślnie zwiększając o jeden. Składnia wygląda następująco:

#!/bin/bash  for n in {1..5};  do  echo $n done>

500

W powyższym kodzie używamy {} do określenia zakresu liczb. Wewnątrz nawiasów klamrowych określamy punkt początkowy, po którym następują dwie kropki i punkt końcowy. Domyślnie zwiększa się o jeden. Dlatego drukujemy 5 liczb od 1 do 5 włącznie.

#!/bin/bash  for n in {1..5..2};  do  echo $n done>

502

hashmapa w Javie

Tutaj widzimy, że pętla wzrosła o 2 jednostki, jak wspomniano w nawiasach klamrowych. Dzięki temu praca z liczbami jest bardzo łatwa i wygodna. Można tego również używać ze znakami alfabetu.

NOTATKA: Nie możemy używać zmiennych wewnątrz nawiasów klamrowych, więc będziemy musieli zakodować wartości na stałe. Aby skorzystać ze zmiennych, w kilku następnych sekcjach omówimy tradycyjne pętle for w stylu C.

Iteracja tablicy dla pętli

Możemy wygodnie iterować po tablicach w bashu, używając pętli for o określonej składni. Możemy użyć specjalnych zmiennych w BASH, tj. @, aby uzyskać dostęp do wszystkich elementów tablicy. Spójrzmy na kod:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done>

503

Możemy iterować po elementach tablicy za pomocą operatora @, który pobiera wszystkie elementy tablicy. Używając pętli for, iterujemy po nich jeden po drugim. Używamy zmiennej ${nazwa_zmiennej[@]}, w której nawiasy klamrowe rozszerzają tutaj wartość zmiennej s, która jest tablicą ciągów znaków. Za pomocą operatora [@] uzyskujemy dostęp do wszystkich elementów i w ten sposób iterujemy po nich w pętli for. Tutaj N jest iteratorem, dlatego możemy wydrukować wartość lub wykonać na niej wymagane przetwarzanie.

Pętle w stylu C

Jak powiedziano wcześniej, musimy użyć zmiennych znajdujących się wewnątrz pętli for, aby wykonać iterację po pewnym zakresie elementów. Dlatego pętle for w stylu C odgrywają bardzo ważną rolę. Zobaczmy, jak z nich korzystamy.

#!/bin/bash  n=7 for (( i=1 ; i<=$n ; i++ ));  do  echo $i done>

504

Jak widać możemy dynamicznie wykorzystywać wartość zakresu warunków końcowych. Pamiętaj, że spacje między podwójnymi nawiasami mogą być zamierzone i stanowią część składni. Pętle for w stylu C to pętle składające się z 3 części, iteratora inicjującego, elementu inkrementującego/dekrementującego i warunku końcowego.

W powyższej składni zainicjowaliśmy iterator/licznik pętli na 1, który może mieć dowolną wartość, zgodnie z wyborem. Druga część to warunek końcowy, tutaj użyliśmy zmiennej N który jest inicjowany przed pętlą for, dlatego używamy prostego $ operator, aby uzyskać wartość zmiennej. Na koniec mamy inkrementator/dekrementator, który zmienia iterator/licznik na dowolną wartość, ale w tym przykładzie użyliśmy operatora jednoargumentowego (++) aby zwiększyć wartość o jeden, co jest równoważne ja=i+1 . W ten sposób możemy używać wyrażeń takich jak i+=2, i–,++i, i tak dalej i tak dalej.

Nieskończona pętla for

Nie używamy tego często, ale czasami przydaje się, aby pewne rzeczy działały. Składnia jest dość prosta i podobna do pętli for w stylu C.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done>

Pętla zaczyna się odn>ustawiony na 4. Zwiększa sięn>o 1 w każdej iteracji i wypisuje wartośćn>dopókin>staje się równa 9. Kiedyn>osiąga 9,break>instrukcja jest wykonywana, a pętla kończy się. Skrypt zatrzymuje się po wydrukowaniu cyfr od 4 do 8.

wiek Ankity Lokhande

505

Jak widzimy, pętla „for” nie ma warunków i będzie się ona powtarzać w nieskończoność, ale mamy instrukcję warunku, która pozwala sprawdzić, czy nie będzie ona trwać wiecznie. Używamy instrukcji break wewnątrz instrukcji if, aby wyjść z pętli i zatrzymać iterację. Użyliśmy inkrementatora do zwiększenia zmiennej w pętli, w przeciwnym razie pętla jest nieskończona. Oczywiście potrzebujemy logiki, aby wyjść z pętli i dlatego musimy użyć instrukcji warunkowej if.