BASH programiranje

Vgnezdena zanka v primerih bash skript

Vgnezdena zanka v primerih bash skript

Pri programiranju ali skriptiranju je zanka eden najosnovnejših in najmočnejših konceptov. Zanka izvaja določene naloge, dokler niso izpolnjeni navedeni pogoji. Vsak programski ali skriptni jezik ima različne načine izvajanja koncepta.

V tem priročniku si oglejte ugnezdene zanke pri skriptiranju bash.

Vgnezdena zanka

Zanka po definiciji izvaja določene naloge, dokler niso izpolnjeni pogoji. Kaj pa, če naloga vključuje zagon zanke? To je koncept ugnezdene zanke. Zanka znotraj zanke.

To je osnovna struktura zanke.

medtem ko (stanje)
# nekaj

Tu bo zanka while še naprej izvajala naloge, razglašene znotraj bloka, dokler je pogoj izpolnjen. V primeru ugnezdene zanke while bi bila struktura videti tako.

# glavna zanka
medtem ko (stanje)
# ugnezdena zanka
medtem ko (stanje)
# nekaj

V teoriji lahko ugnezdene zanke gredo v neskončno globino. V mnogih primerih so ugnezdene zanke odlična rešitev.

Zanka v skriptu bash

Bash je močan skriptni jezik. V bashu obstajajo različne zankaste strukture. Najbolj priljubljeni so za zanke, medtem ko in dokler. Če ste že poznali programiranje za C / C ++, bo sintaksa zagotovo videti precej podobna.

Za zanke

Zanka je ena najpogostejših in najbolj vsestranskih oblik izhodov itd. Struktura zank pri bash skriptiranju. Struktura je zelo podobna tudi zanki v C / C ++.

Struktura for zanke v bash je naslednja.

for ((inicializiraj; pogoj; prirast)); naredi
# nekaj
Končano

Struktura je zelo samoumevna. Oddelek za inicializacijo ni obvezen. Stanje in prirastek pa sta bolj pomembna.

Uresničimo to. Tu je zelo poenostavljen bash skript, ki izvaja for zanko.

za ((i = 0; i < 5 ; i++)); do
odmev "zdravo svet"
Končano

Kot pogoj zanke je mogoče uporabiti tudi seznam / obseg. Še posebej koristno je, če delate s seznamom datotek, obsegov števil, nizov, izhodov ukazov itd. Struktura je videti nekako takole.

za postavko v ; naredi
# nekaj
Končano

Naslednji skript bo na primer petkrat natisnil "hello world".

za i v 1… 5; naredi
odmev "zdravo svet"
Končano

Kaj pa, če moramo delati z vsebino imenika? V naslednjem primeru bo skript natisnil vse datoteke v imeniku / usr / bin.

za i v / usr / bin / *; naredi
echo $ i
Končano

Zdaj, kaj naredimo, da imamo ugnezdene zanke for? To je samo ena zanka znotraj druge. Tukaj je ugnezdena zanka za uporabo prejšnjega primera.

za ((i = 0; i < 3 ; i++)); do
za ((j = 0; j < 2 ; j++)); do
odmev "zdravo svet"
Končano
Končano

Rezultat bo 6-krat "pozdravljen svet". Zunanja zanka se bo izvajala trikrat, notranja zanka pa dvakrat.

Medtem ko zanke

Zanka while je še ena priljubljena in intuitivna zanka, ki je na voljo pri skriptiranju bash. Sintaksa je videti tako.

medtem ; naredi
# nekaj
Končano

V naslednjem primeru bo skript petkrat natisnil "hello world".

num = 1
medtem ko [$ num -le 5]; naredi
odmev "zdravo svet"
num = $ (($ num + 1))
Končano

Kako bi bilo videti, če bi imeli ugnezdeno zanko while? Tu je preprost primer.

število_a = 1
num_b = 1
medtem ko [$ num_a -le 5]; naredi
medtem ko [$ num_b -le 5]; naredi
odmev "zdravo svet"
num_b = $ (($ num_b + 1))
Končano
num_a = $ (($ num_a + 1))
Končano

Do zank

Če imate programsko ozadje v jeziku C / C ++, potem poznate zanko do-while. Na žalost bash nima česa takega. Dokler zanka ne deluje na podoben način. Tudi sintaksa je videti povsem enako.

dokler [ ]; naredi
# nekaj
Končano

Razlika med zanko while in dokler je preskusni pogoj. Dokler je testni pogoj resničen, bo zanka while še naprej delovala. Zanka while pa se bo nadaljevala samo, če je pogoj napačen.

Tu je hiter primer zanke while. Natisnil bo tabelo množenja 2.

število_a = 1
do [$ num_a -gt 10]; naredi
echo $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
Končano

Loop zanke

V določenih situacijah, če so izpolnjeni določeni pogoji, zagon preostale zanke postane odvečen. Lopov zanke so zanimiva lastnost, ki omogoča prekinitev zanke v danem stanju. Pomembneje je za ugnezdene zanke, saj večja kot so zanke, večja je poraba virov in neučinkovitost.

Tu se naslednja zanka for neha izvajati takoj, ko doseže stanje.

za ((i = 1; i<=100;i++)); do
echo $ i
če [$ i -eq 10]; potem
odmor
fi
Končano

Oglejte si, kako prekiniti zanko, za poglobljeno razlago in prikaz prekinitev zanke.

Zadnje misli

Vgnezdena zanka je preprost in zmogljiv koncept za razumevanje in izvajanje. Upajmo, da je ta vodnik lahko opisal in prikazal koncept.

Zanimajo me več bash skriptnih vodnikov? Oglejte si naslednja navodila.

  • Bash neskončna zanka
  • Uporabniški vnos bash skripta
  • Funkcija Bash, ki vrne matriko

Srečno računalništvo!

Kako spremeniti miškin kazalec in velikost, barvo in shemo kazalca v sistemu Windows 10
Kazalec miške in kazalec v operacijskem sistemu Windows 10 sta zelo pomembna vidika operacijskega sistema. To lahko rečemo tudi za druge operacijske s...
Brezplačni in odprtokodni igralni mehanizmi za razvoj iger Linux
Ta članek bo zajemal seznam brezplačnih in odprtokodnih igralnih mehanizmov, ki jih je mogoče uporabiti za razvoj 2D in 3D iger v Linuxu. Obstaja veli...
Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...