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 zankamedtem 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++)); doodmev "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
- Bash neskončna zanka
- Uporabniški vnos bash skripta
- Funkcija Bash, ki vrne matriko
# nekaj
Končano
Naslednji skript bo na primer petkrat natisnil "hello world".
za i v 1… 5; narediodmev "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 / *; narediecho $ 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++)); doza ((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# nekaj
Končano
V naslednjem primeru bo skript petkrat natisnil "hello world".
num = 1medtem 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 = 1num_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 [# 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 = 1do [$ 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++)); doecho $ 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.
Srečno računalništvo!