Som ethvert andet scriptingsprog har Bash også understøttelse af sløjfer.
Sløjfer er gode til at udføre gentagne opgaver. Vi kan bruge til sløjfer og mens sløjfer i vores Bash-scripts.
Syntaksen for for loop er:
for VARIABLE in PARAM1 PARAM2 PARAM3 do // scope of for loop done
For-loop udføres for hver parameter. Parametrene kan være tal, rækkevidde af tal eller strenge osv.
Dette enkle eksempel udskriver tal 1 til 5 ved hjælp af for-sløjfen:
#!/bin/bash for i in 1 2 3 4 5 do echo '$i' done
Produktion:
1 2 3 4 5
Vi kan også definere en række tal, der skal løses gennem:
For eksempel:
for i in {1..5} do echo '$i' done
Produktion:
1 2 3 4 5
Vi kan også bruge for-loop til at gennemgå strengparametre:
#!/bin/bash for day in MON TUE WED THU FRI SAT SUN do echo '$day' done
Produktion:
MON TUE WED THU FRI SAT SUN
Vi kan også bruge en syntaks i C-stil til at skrive for-loop. For eksempel:
#!/bin/bash for ((i=1; i<=5; i++)) do echo '$i' done
Produktion
1 2 3 4 5
For at liste alle filerne i den aktuelle mappe ved hjælp af bash for loop bruger vi:
#!/bin/bash for fname in ./ do ls -l $fname done
Bash understøtter også mens sløjfer. Mens sløjfer udfører et sæt instruktioner, indtil en tilstand vurderes til sand.
Syntaksen for Bash while loop er:
while [condition] do //execute instructions done
Tilstanden evalueres, før instruktioner udføres. Derfor er det nødvendigt at have et middel til at opdatere tilstanden, ellers udføres løkken for evigt.
Følgende er en enkel mens sløjfe, der udskriver tal 1 til 5. Sløjfen afsluttes, når antallet er større end 5.
#!/bin/bash num=1 while [ $num -le 5 ] do echo '$num' let num++ done
Ligesom for loop kan vi også skrive bash while loop på et C-stil-lignende sprog.
For eksempel:
#!/bin/bash num=1 while((num <= 5)) do echo $num let num++ done