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.
Innehållsförteckning
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?