BASH-programmering

Indlejrede sløjfe i Bash Script eksempler

Indlejrede sløjfe i Bash Script eksempler

I programmering eller scripting er sløjfen et af de mest grundlæggende og kraftfulde koncepter. En sløjfe udfører bestemte opgaver, indtil de angivne betingelser er opfyldt. Hvert programmerings- eller scriptingsprog har forskellige måder at implementere konceptet på.

I denne vejledning skal du tjekke den indlejrede sløjfe i bash-scripting.

Indlejret løkke

En sløjfe udfører pr. Definition visse opgaver, indtil betingelserne er opfyldt. Hvad hvis opgaven inkluderer at køre en loop? Dette er begrebet en indlejret løkke. En løkke inden for en løkke.

Dette er den grundlæggende struktur i en sløjfe.

mens (betingelse)
# noget

Her vil mens loop fortsætte med at udføre de opgaver, der er erklæret inde i blokken, så længe betingelsen er opfyldt. I tilfælde af en indlejret mens løkke, ville strukturen se sådan ud.

# hovedsløjfe
mens (betingelse)
# indlejret løkke
mens (betingelse)
# noget

I teorien kan indlejrede sløjfer gå i uendelig dybde. I mange situationer kan indlejrede sløjfer være den perfekte løsning.

Loop i bash script

Bash er et stærkt script-sprog. Der er forskellige loopstrukturer i bash. De mest populære er til, mens og indtil sløjfer. Hvis du er fortrolig med C / C ++ programmering før, så vil syntaksen helt sikkert se helt ud.

Til sløjfer

For loop er en af ​​de mest almindelige og alsidige formoutputs osv. Strukturen af ​​sløjfer i bash scripting. Strukturen ligner også meget på loop i C / C ++.

Strukturen af ​​for loop i bash er som følger.

for ((initialisere; betingelse; forøgelse)); gør
# noget
Færdig

Strukturen er meget selvforklarende. Initialiseringsafsnittet er ikke obligatorisk. Imidlertid er tilstanden og tilvæksten højere prioritet.

Lad os omsætte det til handling. Her er et meget forenklet bash-script, der implementeres til loop.

for ((i = 0; i < 5 ; i++)); do
ekko "hej verden"
Færdig

Det er også muligt at bruge liste / område som loop-tilstand. Det er især nyttigt, hvis du arbejder med en liste over filer, nummerområder, arrays, kommandooutputs osv. Strukturen ser sådan ud.

for vare i ; gør
# noget
Færdig

For eksempel vil følgende script udskrive “hej verden” fem gange.

for jeg i 1… 5; gør
ekko "hej verden"
Færdig

Hvad hvis vi har brug for at arbejde med indholdet af et bibliotek? I det følgende eksempel udskriver scriptet alle filerne i / usr / bin-biblioteket.

for i i / usr / bin / *; gør
ekko $ i
Færdig

Hvad gør vi nu for at have en indlejret løkke? Det er bare en til løkke inde i en anden. Her er en indlejret til loop ved hjælp af det foregående eksempel.

for ((i = 0; i < 3 ; i++)); do
for ((j = 0; j < 2 ; j++)); do
ekko "hej verden"
Færdig
Færdig

Outputtet vil være "hej verden" 6 gange. Den ydre sløjfe kører tre gange og kører den indre sløjfe to gange.

Mens sløjfer

While-loop er en anden populær og intuitiv loop, der er tilgængelig i bash-scripting. Syntaksen ser sådan ud.

mens ; gør
# noget
Færdig

I det følgende eksempel udskrives manuskriptet "hej verden" fem gange.

num = 1
mens [$ num -le 5]; gør
ekko "hej verden"
num = $ (($ num + 1))
Færdig

Hvordan ville det se ud at have en indlejret mens løkke? Her er et simpelt eksempel.

num_a = 1
num_b = 1
mens [$ num_a -le 5]; gør
mens [$ num_b -le 5]; gør
ekko "hej verden"
num_b = $ (($ num_b + 1))
Færdig
num_a = $ (($ num_a + 1))
Færdig

Indtil sløjfer

Hvis du har en programmeringsbaggrund i C / C ++, er du bekendt med do-while-sløjfen. Desværre har bash ikke noget lignende. Imidlertid indtil løkken fungerer på en lignende måde. Syntaksen ser også helt ud.

så længe [ ]; gør
# noget
Færdig

Forskellen mellem mens og indtil løkken er testbetingelsen. Så længe testtilstanden er sand, vil et stykke løb fortsætte. En indtil-loop fortsætter dog kun med at køre, hvis betingelsen er falsk.

Her er et hurtigt eksempel på while-løkken. Det udskriver multiplikationstabellen på 2.

num_a = 1
indtil [$ num_a -gt 10]; gør
ekko $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
Færdig

Loop pause

I visse situationer, hvis visse betingelser er opfyldt, bliver kørsel af resten af ​​sløjfen overflødig. Loop pauser er en interessant funktion, der gør det muligt at bryde ud af loop i en given tilstand. Det er vigtigere for indlejrede sløjfer, jo højere sløjfer, jo mere ressourceforbrug og ineffektivitet.

Her stopper udførelsen af ​​følgende for loop, så snart den når tilstanden.

for ((i = 1; i<=100;i++)); do
ekko $ i
hvis [$ i -æk 10]; derefter
pause
fi
Færdig

Tjek, hvordan du bryder mens løkken er for dybdegående forklaring og demonstration af løkkebrud.

Afsluttende tanker

En indlejret løkke er et simpelt og kraftfuldt koncept at forstå og implementere. Forhåbentlig var denne guide i stand til at beskrive og demonstrere konceptet.

Interesseret i flere bash scriptguider? Tjek følgende guider.

  • Bash uendelig løkke
  • Bash-bruger brugerinput
  • Bash-funktion, der returnerer array

Glad computing!

Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...