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.
Indholdsfortegnelse
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.
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.
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?