Eftersom BASH är ett kommandoradsspråk får vi en ganska funktionsrik erfarenhet för att utnyttja programmeringsfärdigheterna för att utföra uppgifter i terminalen. Vi kan använda loopar och villkorliga uttalanden i BASH-skript för att utföra några repetitiva och knepiga problem på ett enkelt programmatiskt sätt. I den här artikeln kommer vi att fokusera på för slinga i BASH-skript.
Beroende på användningsfallet och problemet som den försöker automatisera, finns det ett par sätt att använda loopar.
- Enkel för loop
- Räckviddsbaserad för loop
- Array-iteration för loopar
- C-stil för öglor
- Oändlig för loop
Enkel för loop
För att köra en for-loop kan vi skriva följande syntax:
#!/bin/bash for n in a b c; do echo $n done>
- I den första iterationen,
n>tar värdet a och skriptet skriver ut a. - I den andra iterationen,
n>tar värdet b, och skriptet skriver ut b. - I den tredje iterationen,
n>tar värdet c, och skriptet skriver ut c.

Ovanstående kommando kommer att iterera över de angivna elementen efter i nyckelord ett efter ett. Elementen kan vara siffror, strängar eller andra former av data.
Räckviddsbaserad för loop
Vi kan använda räckviddsbaserade för loopar. I den här typen av loop kan vi ange numret som ska starta, stoppa och öka vid varje iteration (valfritt) i satsen. Det finns två sätt du kan göra detta, t.ex. genom att nämna inkrementerings-/minskningsvärdet och genom att öka med ett som standard. Syntaxen ser ut så här:
#!/bin/bash for n in {1..5}; do echo $n done> 
I koden ovan använder vi {} för att ange ett antal nummer. Inuti de lockiga hängslen anger vi startpunkten följt av två punkter och en slutpunkt. Som standard ökar den med ett. Därför skriver vi ut 5 nummer från 1 till 5 båda.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
Här kan vi se att slingan ökade med 2 enheter som nämnts i de lockiga hängslen. Detta gör det därför mycket enkelt och bekvämt att arbeta med siffror. Detta kan också användas med alfabetiska tecken.
NOTERA: Vi kan inte använda variabler inuti de lockiga klammerparenteserna, så vi måste hårdkoda värdena. För att använda variablerna ser vi den traditionella C-stilen för loopar i de kommande avsnitten.
Array-iteration för loopar
Vi kan iterera över arrayer bekvämt i bash med för loopar med en specifik syntax. Vi kan använda specialvariablerna i BASH, dvs @ för att komma åt alla element i arrayen. Låt oss titta på koden:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Vi kan iterera över arrayelementen med @-operatorn som får alla element i arrayen. Med hjälp av for-slingan itererar vi över dem en efter en. Vi använder variabeln ${variable_name[@]} där de krulliga klammerparenteserna här utökar värdet på variabeln s här som är en array av strängar. Med operatorn [@] kommer vi åt alla element och itererar på så sätt över dem i for en loop. Här, den n är iteratorn och därför kan vi skriva ut värdet eller göra den nödvändiga bearbetningen på det.
C-stil för öglor
Som sagt tidigare måste vi använda variablerna inuti for-slingorna för att iterera över ett antal element. Och därmed spelar den C-stilade för loopar en mycket viktig roll. Låt oss se hur vi använder dem.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

Som vi kan se kan vi dynamiskt använda värdet av intervallet för slutvillkor. Kom ihåg att mellanrummen mellan de dubbla klammerparenteserna kan vara avsiktliga och är en del av syntaxen. C-stilade för loopar är looparna som har 3 delar, den initialiserande iteratorn, inkrementorn/decrementern och slutvillkoret.
I syntaxen ovan har vi initierat loop-iteratorn/räknaren till 1 som kan vara vad som helst enligt val. Den andra delen är slutvillkoret, här har vi använt variabeln n som initieras före for-slingan och därför använder vi det enkla $ operatorn för att få värdet på variabeln. Slutligen har vi inkrementorn/decrementern som ändrar iteratorn/räknaren till ett värde som kan vara vad som helst, men i exemplet har vi använt unäroperatorn (++) att öka värdet med ett som motsvarar i=i+1 . Därför kan vi använda uttalanden som i+=2, i–,++i, och så vidare.
Oändlig för loop
Vi använder det inte ofta men det är ibland användbart för att få vissa saker att fungera. Syntaxen är ganska enkel och liknar den C-stilade för loopar.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Slingan börjar medn>inställd på 4. Den ökarn>med 1 vid varje iteration och skriver ut värdet pån>fram tillsn>blir lika med 9. Närn>når 9, denbreak>satsen exekveras och loopen avslutas. Skriptet stoppas efter att ha skrivit ut siffrorna 4 till 8.

Som vi kan se har 'för'-slingan inga villkor och denna loopar för alltid men vi har en villkorssats för att kontrollera att den inte fortsätter för alltid. Vi använder break-satsen inuti if-satsen för att komma ur loopen och sluta iterera med iteratorn. Vi har använt inkrementorn för att öka variabeln i slingan annars är slingan oändlig. Naturligtvis behöver vi lite logik för att bryta oss ur loopen och det är därför vi måste använda if conditional-satsen.