BASH-programmering

Nested Loop in Bash Script Exempel

Nested Loop in Bash Script Exempel

I programmering eller skript är slingan ett av de mest grundläggande och kraftfulla koncepten. En slinga utför vissa uppgifter tills de angivna villkoren är uppfyllda. Varje programmerings- eller skriptspråk har olika sätt att implementera konceptet.

I den här guiden, kolla in den kapslade slingan i bash-skript.

Kapslad slinga

En slinga utför per definition vissa uppgifter tills villkoren är uppfyllda. Vad händer om uppgiften inkluderar att köra en slinga? Detta är konceptet med en kapslad slinga. En slinga i en slinga.

Detta är den grundläggande strukturen för en slinga.

medan (villkor)
# något

Här kommer while-slingan att fortsätta utföra de uppgifter som deklarerats inuti blocket så länge villkoret är uppfyllt. I fallet med en kapslad slinga, skulle strukturen se ut så här.

# huvudslinga
medan (villkor)
# kapslad slinga
medan (villkor)
# något

I teorin kan kapslade öglor gå till oändligt djup. I många situationer kan kapslade öglor vara den perfekta lösningen.

Loop in bash-skript

Bash är ett kraftfullt skriptspråk. Det finns olika loopstrukturer i bash. De mest populära är för, medan och tills slingor. Om du känner till C / C ++ -programmering tidigare, kommer syntaxen definitivt att se ganska lika ut.

För öglor

For loop är en av de vanligaste och mest mångsidiga formerna osv. Strukturen för loopar i bash-skript. Strukturen liknar också mycket för loop i C / C ++.

Strukturen för for loop in bash är som följer.

för ((initialisera; villkor; inkrement)); do
# något
Gjort

Strukturen är mycket självförklarande. Initieringsavsnittet är inte obligatoriskt. Villkoret och ökningen har dock högre prioritet.

Låt oss genomföra det. Här är ett mycket förenklat bash-skript som implementeras för loop.

för ((i = 0; i < 5 ; i++)); do
eko "hej värld"
Gjort

Det är också möjligt att använda lista / intervall som slinga. Det är särskilt användbart om du arbetar med en lista med filer, nummerintervall, matriser, kommandoutgångar etc. Strukturen ser ungefär så här ut.

för artikel i ; do
# något
Gjort

Till exempel kommer följande manus att skriva ut “hej världen” fem gånger.

för jag i 1… 5; do
eko "hej värld"
Gjort

Vad händer om vi behöver arbeta med innehållet i en katalog? I följande exempel kommer skriptet att skriva ut alla filer i / usr / bin-katalogen.

för i i / usr / bin / *; do
eko $ i
Gjort

Vad gör vi nu för att ha en kapslad slinga? Det är bara en för slinga inuti en annan. Här är en kapslad för loop med hjälp av föregående exempel.

för ((i = 0; i < 3 ; i++)); do
för ((j = 0; j < 2 ; j++)); do
eko "hej värld"
Gjort
Gjort

Produktionen kommer att vara "hej världen" 6 gånger. Den yttre slingan körs tre gånger, den inre slingan körs två gånger.

Medan öglor

While-slingan är en annan populär och intuitiv slinga som finns i bash-skript. Syntaxen ser ut så här.

medan ; do
# något
Gjort

I följande exempel kommer manuset att skriva ut “hej världen” fem gånger.

num = 1
medan [$ num -le 5]; do
eko "hej värld"
num = $ (($ num + 1))
Gjort

Hur skulle det se ut att ha en kapslad ögla? Här är ett enkelt exempel.

num_a = 1
num_b = 1
medan [$ num_a -le 5]; do
medan [$ num_b -le 5]; do
eko "hej värld"
num_b = $ (($ num_b + 1))
Gjort
num_a = $ (($ num_a + 1))
Gjort

Fram till öglor

Om du har en programmeringsbakgrund i C / C ++, är du bekant med gör-medan-slingan. Tyvärr har bash inget liknande. Men tills slingan fungerar på liknande sätt. Syntaxen ser också ganska ut.

fram tills [ ]; do
# något
Gjort

Skillnaden mellan medan och tills slingan är testvillkoret. Så länge testvillkoret är sant fortsätter en stund-loop. En till-loop kommer dock att fortsätta att fungera endast om villkoret är falskt.

Här är ett snabbt exempel på stundslingan. Det kommer att skriva ut multiplikationstabellen med 2.

num_a = 1
tills [$ num_a -gt 10]; do
echo $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
Gjort

Loop break

I vissa situationer, om vissa villkor är uppfyllda, blir resten av slingan överflödig. Slingbrytningar är en intressant funktion som gör det möjligt att bryta ur slingan vid ett givet tillstånd. Det är viktigare för kapslade öglor eftersom ju högre öglor, desto mer resursförbrukning och ineffektivitet.

Här kommer följande för loop att sluta köras så snart det når tillståndet.

för ((i = 1; i<=100;i++)); do
eko $ i
om [$ i -ekv 10]; sedan
ha sönder
fi
Gjort

Kolla in hur man bryter medan loop för djupare förklaring och demonstration av loop break.

Slutgiltiga tankar

En kapslad slinga är ett enkelt och kraftfullt koncept att förstå och implementera. Förhoppningsvis kunde den här guiden beskriva och demonstrera konceptet.

Intresserad av fler bash-skriptguider? Kolla in följande guider.

  • Bash oändlig slinga
  • Användarinmatning för Bash-skript
  • Bash-funktion som returnerar array

Happy computing!

OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...
SuperTuxKart för Linux
SuperTuxKart är en fantastisk titel som är utformad för att ge dig Mario Kart-upplevelsen gratis på ditt Linux-system. Det är ganska utmanande och rol...
Battle for Wesnoth Tutorial
Slaget om Wesnoth är ett av de mest populära open source-strategispel som du kan spela just nu. Det här spelet har inte bara utvecklats under mycket l...