10 Bash For Loop-eksempler med forklaringer

For Loop er en integreret del af ethvert programmeringssprog. Det giver programmer mulighed for at iterere gennem et bestemt antal elementer.

For eksempel, hvis du vil gennemgå en liste eller række af ‘n’ elementer, skal du bruge en for Loop. Lad os tage et simpelt eksempel:

1Violet2Indigo3Blå4Grønt Regnbuebord

For at udføre nogen handlinger eller gentage punkterne i ovenstående tabel, kræver vi en For Loop.

Bash For Loop

I et bash-script er For Loop-syntaksen som følger:

#!/bin/bash

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

do

 ACTION 1

 ACTION 2

 .....

done

Bash For Loop er ret ligetil. Den første linje #!/bin/bash angiver, at koden er et bash-script. VAR står for den midlertidige variabel, der bruges til løkker. N angiver det maksimale antal iterationer. ‘do’ og ‘done’ starter og stopper henholdsvis løkken. Handlinger er de kommandoer, der udføres i løkken.

Vi kan udføre Bash For Loop med forskellige variabler, såsom liste, strenge, heltal og arrays. Denne artikel vil vise et par almindelige eksempler på Bash For Loop.

Du kan udføre disse programmer direkte på bash-kommandolinjen eller gemme dem i en fil og udføre filen ved hjælp af kommandoen Bash filename.sh.

Læser statisk liste

Overvej følgende liste – rainbowColorList = Violet, Indigo, Blå, Grøn, Gul, Orange, Rød

Vi kan udskrive ovenstående strengliste ved at bruge Bash For Loop som følger:

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

Outputtet vil være listen over elementer i en ny linje.

#Output

Violet
Indigo
Blue
Green
Yellow
Orange
Red

Læsning af et array

Syntaksen til at deklarere et array er anderledes. Brug parenteser for hvert element (String).

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

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

     echo "I like $colors"

done

‘@’ bruges til at iterere gennem hvert element i arrayet.

#Output

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

Vi kan også bruge For Loop til at udskrive indekserne og array-elementerne.

#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

Bemærk, at vi bruger ‘!’ i løkken for at få elementindekset.

  Forsvindende Safari-faner på iPhone/iPad: 7 rettelser at prøve!

Itererende rækkevidde af tal

Vi kan bruge Bash For Loop til at iterere over en række tal.

#iterating over range of numbers

echo "Countdown begins..."

for N in {10..0}

do

    echo "$N"

done

‘..’ angiver en række tal.

#Output

10
9
8
7
6
5
4
3
2
1
0

Vi kan også springe tælletal over ved at angive området.

I eksemplet nedenfor springer vi over at tælle med 3.

#iterating with skip counting

echo "Countdown begins..."

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

do

    echo "$N"

done

Programmet ovenfor starter med 30 som det første tal og tæller ned til 0. Den sidste parameter i for-løkken ‘3’ angiver antallet af overspringninger.

#Output

30
27
24
21
18
15
12
9
6
3
0

Stryge og tegn

Vi kan lave en masse interessante strengoperationer med Bash For Loop.

For eksempel kan vi læse hvert tegn i en streng ved at bruge ‘seq’-operatoren i en For Loop:

#read characters of a string

myword="welcome"

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

do

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

done

Bemærk, at ‘seq’ skal starte med 1 for at få det første tegn først.

#Output

W
e
l
c
o
m
e

Vi kan også udskrive strengene adskilt af mellemrum en efter en:

#read each word from a sentence

mysentence="Welcome to toadmin.dk. One stop hub for all techies"

for word in $mysentence; do

    echo $word

done
#Output

Welcome 
to 
toadmin.dk. 
One 
stop 
hub 
for 
all 
techies

Udtryk

I lighed med ethvert andet programmeringssprog som Java, kan vi placere udtryk inde 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æsning af kommandolinjeargumenter

For at læse fra kommandolinjeargumenter bruger vi kommandoen ‘læs’. I nedenstående eksempel vil vi få et par tal fra brugeren og udskrive summen ved hjælp af Bash For Loop. Vi bruger variablen total til at gemme den mellemliggende og endelige total eller summen af ​​tallene.

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"

Udgangen er:

#Output

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

Find ulige tal

For at finde ulige og lige tal mellem 1 til 10 (eller et hvilket som helst tal N), skal vi bruge betingelsen if sammen med Bash for Loop. For at bestemme et lige tal, dividerer vi tallet med 2, og hvis resten er 0, kategoriserer vi det som lige ellers ulige.

#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

Bemærk, at vi giver intervallet som 10 i ovenstående eksempel. Vi kan ændre dette tal for at få lige og ulige tal mellem et hvilket som helst område. Du kan også prøve at læse nummeret fra brugeren ved at bruge ‘læs’-kommandoen, vi lærte i det foregående afsnit.

#Output

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

Uendelig løkke

Infinity eller infinite Loop er en loop, der ikke stopper med at udføre, og programmet skal tvinges til at stoppe med at bruge Ctrl+C. Vi kan nemt oprette en uendelig løkke ved hjælp af ‘; ;’ operatør inde i for-løkken:

for (( ; ; ))

do

  echo "Welcome to toadmin.dk"

done
#Output

Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
Welcome to toadmin.dk
^C
$

Pauseerklæring

Break-udsagn bruges til at bryde fra løkken, når en ‘hvis’-betingelse er opfyldt.

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 dette eksempel forsøger vi at finde farven grøn. For-Loop’en går gennem hver farve, og når den grønne farve er fundet, kommer programmet ud af løkken på grund af break-sætningen.

#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æt erklæring

Fortsæt bruges til at springe den aktuelle sløjfe over og gå til den næste baseret på en bestemt betingelse. For eksempel, hvis du ikke ønsker at udskrive farven ‘Grøn’ fra vores tidligere program, kan vi fortsætte, og alle andre farver undtagen Grøn vil blive vist.

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

Afsluttende ord

Vi har dækket de mest almindelige anvendelser af en Bash For Loop ved hjælp af strenge, heltal, arrays og liste. Hvis du lærer Linux, men har en Windows 10-maskine, kan du bruge WSL-funktionen og installere Linux på din Windows-maskine.

  Sådan opdeles Ubuntu mellem HDD og SSD

Du kan derefter bruge Linux-terminalen på samme måde som CMD.

Dernæst kan du tjekke hvordan man kører bash-scripts ved hjælp af Python?