Da BASH er et kommandolinjesprog, får vi nogle ret funktionsrige erfaringer til at udnytte programmeringsevnerne til at udføre opgaver i terminalen. Vi kan bruge loops og betingede sætninger i BASH-scripts til at udføre nogle gentagne og vanskelige problemer på en simpel programmatisk måde. I denne artikel vil vi fokusere på for sløjfe i BASH-scripts.
Afhængigt af brugssagen og det problem, den forsøger at automatisere, er der et par måder at bruge loops på.
- Enkel til sløjfe
- Rækkebaseret for loop
- Array iteration for loops
- C-stil til løkker
- Uendelig for loop
Enkel til sløjfe
For at udføre en for-løkke kan vi skrive følgende syntaks:
#!/bin/bash for n in a b c; do echo $n done>
- I den første iteration,
n>tager værdien a, og scriptet udskriver a. - I den anden iteration,
n>tager værdien b, og scriptet udskriver b. - I den tredje iteration,
n>tager værdien c, og scriptet udskriver c.

Ovenstående kommando vil iterere over de angivne elementer efter i nøgleord én efter én. Elementerne kan være tal, strenge eller andre former for data.
Rækkebaseret for loop
Vi kan bruge rækkeviddebaseret til loops. I denne type sløjfe kan vi angive antallet, der skal starte, stoppe og stige ved hver iteration (valgfrit) i sætningen. Der er to måder, du kan gøre dette på, dvs. ved at nævne stignings-/dekrementeringsværdien og ved at stige med én som standard. Syntaksen ser sådan ud:
understreng i java
#!/bin/bash for n in {1..5}; do echo $n done> 
I ovenstående kode bruger vi {} til at angive en række tal. Inde i de krøllede seler angiver vi startpunktet efterfulgt af to prikker og et slutpunkt. Som standard stiger den med én. Derfor udskriver vi 5 tal fra 1 til 5 begge inklusive.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
java streng indeks af
Her kan vi se, at løkken steg med 2 enheder som nævnt i de krøllede seler. Dette gør således arbejdet med tal meget nemt og bekvemt. Dette kan også bruges med alfabetiske tegn.
BEMÆRK: Vi kan ikke bruge variabler inde i de krøllede klammeparenteser, så vi bliver nødt til at hardkode værdierne. For at bruge variablerne ser vi den traditionelle C-stil til loops i de næste par afsnit.
Array iteration for loops
Vi kan iterere over arrays bekvemt i bash ved at bruge for loops med en specifik syntaks. Vi kan bruge de specielle variabler i BASH, dvs. @ for at få adgang til alle elementerne i arrayet. Lad os se på koden:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Vi kan iterere over array-elementerne ved at bruge @-operatoren, der henter alle elementerne i arrayet. Ved at bruge for-løkken gentager vi dem én efter én. Vi bruger variablen ${variable_name[@]}, hvor de krøllede parenteser her udvider værdien af variablen s her, som er en række strenge. Ved at bruge [@]-operatoren får vi adgang til alle elementerne og itererer således over dem i for en loop. Her, den n er iteratoren, derfor kan vi udskrive værdien eller udføre den nødvendige behandling på den.
C-stil til løkker
Som sagt tidligere, skal vi bruge variablerne inde i for-løkkerne til at iterere over en række elementer. Og dermed spiller den C-stilede til loops en meget vigtig rolle. Lad os se, hvordan vi bruger dem.
java loops
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

Som vi kan se, kan vi dynamisk bruge værdien af rækken af slutbetingelser. Husk, at mellemrummene mellem de dobbelte klammeparenteser kan være bevidste og er en del af syntaksen. C-stilet til loops er de loops, der har 3 dele, initialiseringsiteratoren, inkrementor/decrementer og slutbetingelsen.
I syntaksen ovenfor har vi initialiseret loop-iteratoren/tælleren til 1, der kan være hvad som helst efter eget valg. Den anden del er slutbetingelsen, her har vi brugt variablen n som initialiseres før for-løkken og derfor bruger vi det simple $ operatør for at få værdien af variablen. Til sidst har vi inkrementoren/decrementeren, som ændrer iteratoren/tælleren til en værdi, der kan være alt, men i eksemplet har vi brugt den unære operator (++) at øge værdien med en, der svarer til i=i+1 . Således kan vi bruge udsagn som i+=2, i–,++i, og så videre og så videre.
Uendelig for loop
Vi bruger det ikke ofte, men det er nogle gange nyttigt at få visse ting til at fungere. Syntaksen er ret nem og ligner C-stilet for loops.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Sløjfen starter medn>indstillet til 4. Det øgesn>med 1 ved hver iteration og udskriver værdien afn>indtiln>bliver lig med 9. Hvornårn>når 9, denbreak>sætningen udføres, og løkken afsluttes. Scriptet stopper efter udskrivning af tallene 4 til 8.

Som vi kan se, har 'for'-løkken ingen betingelser, og denne løkker for evigt, men vi har en betingelseserklæring for at kontrollere, at den ikke fortsætter for evigt. Vi bruger break-sætningen inde i if-sætningen for at komme ud af løkken og stoppe med at iterere med iteratoren. Vi har brugt inkrementoren til at inkrementere variablen i løkken ellers er løkken uendelig. Selvfølgelig har vi brug for noget logik for at bryde ud af løkken, og det er derfor, vi skal bruge den betingede sætning.