10 Bash for loop-exempel med förklaringar

For Loop är en integrerad del av alla programmeringsspråk. Det tillåter program att iterera genom ett visst antal objekt.

Till exempel, om du vill gå igenom en lista eller array av ’n’ objekt, skulle du använda en för Loop. Låt oss ta ett enkelt exempel:

1Violet2Indigo3Blå4Grönt Regnbågsbord

För att utföra några åtgärder eller upprepa objekten i tabellen ovan, kräver vi en For Loop.

Bash For Loop

I ett bash-skript är For Loop-syntaxen följande:

#!/bin/bash

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

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop är ganska okomplicerad. Den första raden #!/bin/bash indikerar att koden är ett bash-skript. VAR står för den temporära variabeln som används för looping. N anger det maximala antalet iterationer. ’gör’ och ’klar’ startar respektive stoppar slingan. Åtgärder är de kommandon som körs inom loopen.

Vi kan köra Bash For Loop med olika variabler, som list, strängar, heltal och arrayer. Den här artikeln kommer att visa några vanliga exempel på Bash For Loop.

Du kan köra dessa program direkt på bash-kommandoraden eller spara dem i en fil och köra filen med kommandot Bash filename.sh.

Läser statisk lista

Tänk på följande lista – rainbowColorList = Violet, Indigo, Blå, Grön, Gul, Orange, Röd

Vi kan skriva ut ovanstående stränglista med Bash For Loop enligt följande:

#! /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

Utdata kommer att vara listan över objekt på en ny rad.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Läser en Array

Syntaxen för att deklarera en array är annorlunda. Använd parenteser för varje element (String).

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

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

     echo "I like $colors"

done

’@’ används för att iterera genom varje element i arrayen.

#Output

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

Vi kan också använda For Loop för att skriva ut indexen och arrayelementen.

#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

Observera att vi använder ’!’ i slingan för att få elementindex.

Itererande antal nummer

Vi kan använda Bash For Loop för att iterera över ett antal siffror.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

’..’ indikerar ett antal siffror.

#Output

10
9
8
7
6
5
4
3
2
1
0

Vi kan också hoppa över räknetal genom att ange intervallet.

I exemplet nedan hoppar vi över att räkna med 3.

#iterating with skip counting

echo "Countdown begins..."

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

do

    echo "$N"

done

Programmet ovan börjar med 30 som första siffra och räknar ner till 0. Den sista parametern i for-slingan ’3’ anger antalet överhoppningar.

#Output

30
27
24
21
18
15
12
9
6
3
0

Stråkar och karaktärer

Vi kan göra många intressanta strängoperationer med Bash For Loop.

Till exempel kan vi läsa varje tecken i en sträng genom att använda operatorn ”seq” i en For Loop:

#read characters of a string

myword="welcome"

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

do

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

done

Observera att ”seq” ska börja med 1 för att få det första tecknet först.

#Output

W
e
l
c
o
m
e

Vi kan också skriva ut strängarna åtskilda av mellanslag en efter en:

#read each word from a sentence

mysentence="Welcome to adminvista.com. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
adminvista.com. 
One 
stop 
hub 
for 
all 
techies

Uttryck

I likhet med alla andra programmeringsspråk som Java kan vi placera uttryck i en 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

Läsa kommandoradsargument

För att läsa från kommandoradsargument använder vi kommandot ’läs’. I exemplet nedan kommer vi att få några siffror från användaren och skriva ut summan med Bash For Loop. Vi använder variabeln total för att lagra den mellanliggande och slutliga summan eller summan av talen.

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"

Utgången är:

#Output

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

Hitta udda jämna nummer

För att hitta udda och jämna tal mellan 1 och 10 (eller valfritt tal N) bör vi använda if-villkoret tillsammans med Bash for Loop. För att bestämma ett jämnt tal delar vi talet med 2 och om resten är 0, kategoriserar vi det som ett jämnt annat udda tal.

#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

Observera att vi ger intervallet som 10 i exemplet ovan. Vi kan ändra detta nummer för att få jämna och udda tal mellan alla intervall. Du kan också försöka läsa numret från användaren genom att använda kommandot ”läs” som vi lärde oss i föregående avsnitt.

#Output

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

Oändlig loop

Infinity eller infinite Loop är en loop som inte slutar exekvera, och programmet måste tvingas sluta med Ctrl+C. Vi kan enkelt skapa en oändlig loop med hjälp av ’; ;’ operatör inuti for Loop:

for (( ; ; ))

do

  echo "Welcome to adminvista.com"

done
#Output

Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
Welcome to adminvista.com
^C
$

Paus uttalande

Break-satser används för att bryta från loopen när ett ”om”-villkor är uppfyllt.

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"

I det här exemplet försöker vi hitta färgen grön. For-Loop loopar genom varje färg, och när den gröna färgen hittas, kommer programmet ut ur Loop på grund av break-satsen.

#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

Fortsätt uttalande

Continue används för att hoppa över den aktuella loopen och gå till nästa baserat på ett visst tillstånd. Till exempel, om du inte vill skriva ut färgen ”Grön” från vårt tidigare program, kan vi lägga till fortsätt, och alla andra färger utom Grön kommer att visas.

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

Slutord

Vi har täckt de vanligaste användningsområdena för en Bash For Loop, med hjälp av strängar, heltal, matriser och lista. Om du lär dig Linux men har en Windows 10-maskin kan du använda WSL-funktionen och installera Linux på din Windows-maskin.

Du kan sedan använda Linux-terminalen på ett liknande sätt som CMD.

Därefter kan du kolla in Hur man kör bash-skript med Python?