10 przykładów Bash For Loop z objaśnieniami

For Loop jest integralną częścią każdego języka programowania. Pozwala programom na iterację przez określoną liczbę elementów.

Na przykład, jeśli chcesz przejrzeć listę lub tablicę elementów 'n’, użyjesz pętli for. Weźmy prosty przykład:

1Fioletowy2Indygo3Niebieski4ZielonyTęczowy Stół

Aby wykonać jakiekolwiek czynności lub iterować elementy w powyższej tabeli, potrzebujemy pętli For.

Bash For Loop

W skrypcie bash składnia For Loop wygląda następująco:

#!/bin/bash

for VAR in 1 2 3 4 5.....N

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop jest dość prosty. Pierwsza linia #!/bin/bash wskazuje, że kod jest skryptem bash. VAR oznacza tymczasową zmienną używaną do zapętlania. N oznacza maksymalną liczbę iteracji. 'do’ i 'done’ odpowiednio uruchamiają i zatrzymują pętlę. Akcje to polecenia wykonywane w pętli.

Możemy wykonać Bash For Loop z różnymi zmiennymi, takimi jak lista, łańcuchy, liczby całkowite i tablice. W tym artykule pokażemy kilka typowych przykładów Bash For Loop.

Możesz bezpośrednio uruchomić te programy w wierszu poleceń bash lub zapisać je w pliku i uruchomić plik za pomocą polecenia Bash nazwa_pliku.sh.

Czytanie listy statycznej

Rozważ następującą listę – rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red

Możemy wydrukować powyższą listę ciągów za pomocą Bash For Loop w następujący sposób:

#! /bin/sh

# Define the list

rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red

# Comma separator pattern using //,/

for colors in ${rainbowColorList//,/ }

do

   echo $colors

done

Wynikiem będzie lista pozycji w nowej linii.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Odczytywanie tablicy

Składnia deklarowania tablicy jest inna. Użyj nawiasów dla każdego elementu (String).

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for colors in "${rainbowArray[@]}"; do

     echo "I like $colors"

done

„@” służy do iteracji przez każdy element tablicy.

#Output

I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red

Możemy również użyć pętli For do wydrukowania indeksów i elementów tablicy.

#Printing with index

rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")

for i in "${!rainbowArray[@]}";

do

  echo "Color at index " $i " : " "${rainbowArray[$i]}"

  i=$((i+1));

done
#Output

Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red

Zauważ, że używamy ’!’ w pętli, aby uzyskać indeks elementu.

Iteracyjny zakres liczb

Możemy użyć Bash For Loop do iteracji w zakresie liczb.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

’..’ wskazuje zakres liczb.

#Output

10
9
8
7
6
5
4
3
2
1
0

Możemy również pominąć liczby zliczane, określając zakres.

W poniższym przykładzie pomijamy liczenie o 3.

#iterating with skip counting

echo "Countdown begins..."

for N in {30..0..3}

do

    echo "$N"

done

Powyższy program zaczyna się od 30 jako pierwszej liczby i odlicza do 0. Ostatni parametr w pętli for „3” określa liczbę pominięć.

#Output

30
27
24
21
18
15
12
9
6
3
0

Ciągi i znaki

Za pomocą Bash For Loop możemy wykonać wiele interesujących operacji na ciągach.

Na przykład możemy odczytać każdy znak ciągu za pomocą operatora 'seq’ w pętli For:

#read characters of a string

myword="welcome"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Zauważ, że 'seq’ powinno zaczynać się od 1, aby najpierw otrzymać pierwszy znak.

#Output

W
e
l
c
o
m
e

Możemy również wydrukować ciągi oddzielone spacją jeden po drugim:

#read each word from a sentence

mysentence="Welcome to newsblog.pl. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
newsblog.pl. 
One 
stop 
hub 
for 
all 
techies

Wyrażenia

Podobnie jak w każdym innym języku programowania, takim jak Java, możemy umieszczać wyrażenia wewnątrz Bash For Loop.

for (( var=10; var>=0; var-- ))

do 

  echo "Counting down...$var"

done
#Output

Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0

Odczytywanie argumentów wiersza poleceń

Aby czytać z argumentów wiersza poleceń, używamy polecenia 'read’. W poniższym przykładzie otrzymamy od użytkownika kilka liczb i wypiszemy sumę za pomocą Bash For Loop. Używamy zmiennej total do przechowywania pośredniej i końcowej sumy lub sumy liczb.

read -a array -p "Enter the numbers you want to add:"

total=0

for i in ${array[@]}; do

  let total+=$i

done

echo "Sum of the numbers is: $total"

Dane wyjściowe to:

#Output

Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73

Znajdowanie liczb nieparzystych i parzystych

Aby znaleźć liczby nieparzyste i parzyste od 1 do 10 (lub dowolną liczbę N), powinniśmy użyć warunku if wraz z Bash for Loop. Aby określić liczbę parzystą, podzielimy tę liczbę przez 2, a jeśli reszta wynosi 0, zaklasyfikujemy ją jako parzystą w przeciwnym razie nieparzystą.

#declare the list where the even and odd numbers will be sorted and kept

evennum=""

oddnum=""

for (( i=1; i<=10; i++ ))

do

remainder=$(( $i % 2 ))

if [ $remainder -eq 0 ]; then

 evennum="$evennum $i "

else

 oddnum="$oddnum $i "

fi

done

echo "Even numbers are: "$evennum

echo "Odd numbers are: "$oddnum

Zauważ, że w powyższym przykładzie podajemy zakres jako 10. Możemy zmienić tę liczbę, aby uzyskać liczby parzyste i nieparzyste z dowolnego zakresu. Możesz także spróbować odczytać liczbę od użytkownika za pomocą polecenia „odczytaj”, którego nauczyliśmy się w poprzedniej sekcji.

#Output

Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9

Nieskończona pętla

Nieskończoność lub nieskończona Pętla to pętla, która nie przestaje się wykonywać, a program musi zostać zmuszony do zatrzymania się za pomocą Ctrl+C. Możemy łatwo stworzyć nieskończoną pętlę za pomocą ’; ;’ operator wewnątrz pętli for:

for (( ; ; ))

do

  echo "Welcome to newsblog.pl"

done
#Output

Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
Welcome to newsblog.pl
^C
$

Przerwij oświadczenie

Instrukcje Break są używane do przerwania pętli, gdy spełniony jest warunek „if”.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    break

  fi

  echo "Searching for Green, the color now is $color"

done

echo "I found my color $color"

W tym przykładzie próbujemy znaleźć kolor zielony. For-Loop przechodzi w pętlę przez każdy kolor, a po znalezieniu koloru zielonego program wychodzi z pętli z powodu instrukcji break.

#Output

Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green

Kontynuuj oświadczenie

Kontynuuj służy do pominięcia bieżącej pętli i przejścia do następnej w oparciu o określony warunek. Na przykład, jeśli nie chcesz drukować koloru 'Zielonego’ z naszego poprzedniego programu, możemy wstawić kontynuuj, a wszystkie inne kolory z wyjątkiem zielonego zostaną wyświetlone.

for color in Violet Indigo Blue Green Yellow Orange Red

do

  if [[ "$color" == 'Green' ]]; then

    continue

  fi

  echo "$color"

done
#Output

Violet
Indigo
Blue
Yellow
Orange
Red

Ostatnie słowa

Omówiliśmy najczęstsze zastosowania Bash For Loop, używając ciągów, liczb całkowitych, tablic i list. Jeśli uczysz się systemu Linux, ale masz komputer z systemem Windows 10, możesz użyć funkcji WSL i zainstalować system Linux na komputerze z systemem Windows.

Następnie możesz używać terminala Linux w podobny sposób do CMD.

Następnie możesz sprawdzić Jak uruchamiać skrypty bash za pomocą Pythona?