Zanka Bash 'Do': Vadnica in primeri

Uporaba zanke 'until' v skriptu Bash za zanko čez ukaz(e).

Bash (Bourne Again Shell) je ukazni poziv in skriptni jezik lupine v operacijskih sistemih GNU/Linux. To je privzeta lupina za večino distribucij Linuxa.

Kot večina skriptnih jezikov, Bash ponuja sintakse zanke za večkratno ponovitev podobnih nalog. V tem članku se bomo naučili, kako uporabljati dokler zanka v Bashu.

Uvod

The dokler zanka v Bash se uporablja za večkratno izvajanje ukazov (izvedenih ukazov) na podlagi izhoda drugega ukaza (ukazi) (pogojni ukazi). Izvedeni ukazi se bodo izvajali, dokler ukaz pogoja ne bo uspel (tj. vrne stanje, ki ni nič. Vsak ukaz v Linuxu vrne 0 za uspeh in celo število, ki ni nič za neuspeh). To je ravno nasprotno od medtem zanko, v kateri se izvedeni ukazi izvajajo, dokler ukaz pogoja ni uspešen.

Če je pogojnih ukazov več, stavek upošteva samo status zadnjega ukaza na seznamu, to pomeni, da se bo zanka izvajala, dokler zadnji ukaz na seznamu ne bo uspel.

Splošna sintaksa

Splošna sintaksa za dokler zanka v Bashu je:

dokler ne narediš

Seznam ukazov za izvajanje se bo izvajal, dokler zadnji ukaz na seznamu ukazov za pogoj ne uspe. Ko je zadnji ukaz uspešen, se zanka zapre.

Uporabniki lahko na seznamih ukazov določijo katero koli izvedljivo datoteko. Lahko so standardni programi za Linux ali uporabniški programi ali skripti po meri. Vsak ukaz mora biti v novi vrstici ali ločen s podpičjem v isti vrstici.

Poglejmo si nekaj primerov.

Zanka, dokler spremenljivka ne bo imela določene vrednosti: Naslednja zanka se izvaja do vrednosti spremenljivke x je 10.

x=0 dokler [[ $x -eq 10 ]] ne odmeva $x ((x++)) končano

V vsaki ponovitvi preverjamo, ali je vrednost x 10. Vrednost se preverja s pomočjo test ukaz. [[ Izraz ]] je sintaksa za testni ukaz (glej moški test).

Nato v notranjosti narediti ... opravljeno blok, preprosto natisnemo vrednost x in jo povečamo. Zanka zapusti, ko je ukaz pogoja uspešen, to je, ko $x je enako 10.

Opomba: Indeksno spremenljivko, ki se uporablja v zanki 'until', je treba inicializirati pred zanko 'until' ali v ukazih pogoja, v nasprotju z zanko for, ki omogoča inicializacijo spremenljivke implicitno.

Z več ukazi za pogoje: Naslednja zanka ustvari 5 imenikov z imenom dir0, dir1, ... dir4.

z=0 do odmeva "Živjo" odmeva "Adijo" [[ $z -eq 5 ]] do echo "Ustvarjanje dir$z..." mkdir dir$z ((z++)) končano

Prvi ukazi odmevajo "Živjo" in odmevajo "Adijo" se bodo enkrat v celoti izvršili; njihov uspeh ali neuspeh nima nobenega vpliva na to, kako dolgo bo zanka potekala.

Nato se izvede testni ukaz za preverjanje vrednosti spremenljivke z. Dokler ta ukaz ne uspe, tj. dokler vrednost z ni 5, se ukazi pogoja in izvedeni ukazi izvajajo po vrstnem redu. Tukaj bo za vsako ponovitev najprej zagnala 2 ukaza za odmev v stanju in nato 3. pogojni ukaz preveri vrednost z. Če ni 5, vstopi v zanko in izvede dane ukaze.

Prekini in nadaljuj

Izjava o prekinitvi za pogojni izhod

Uporabimo lahko tudi pogojni stavek če znotraj zanke. The če stavek se lahko uporablja z a zlomiti stavek, za pogojni izhod iz zanke.

x=0 dokler [[ $x -eq 10 ]] naredi, če [[ $x -eq 5 ]] prekine fi echo $x ((x++)) končano

Zgornja zanka do bo izpisala številke od 0 do 4. Potem, ko je vrednost i 5, bo izstopila iz zanke. To je še posebej uporabno, ko je treba zanko zapustiti, ko ukaz daje določen izhod.

Izjavo Continue, da pogojno preskočite ponovitev

Bash ima tudi a nadaljevati stavek za preskok preostalega dela ponovitve v zanki, če je določen pogoj izpolnjen.

x=0 dokler [[ $x -eq 10 ]] naredi, če [[ $x -eq 5 ]] nadaljuje fi echo $x ((x++)) končano

Zgornja zanka bo izpisala številke od 0 do 10, razen 5, ker med ponovitvijo x=5 obstaja stavek za nadaljevanje, ki bo preskočil preostanek kode v zanki na začetku s ponovitvijo x=6.

Uporaba zank: skripti in ukazna vrstica

Sintakse zanke je mogoče uporabiti v lupini Bash neposredno ali iz izvedljive skriptne datoteke lupine. Podoben za in medtem zanke, enkrat an dokler sintaksa zanke je vnesena v lupino, lupina nadaljuje s pozivom, da uporabniku omogoči nadaljevanje ukazov, ki jih je treba zastaviti.

Sicer pa lahko uporabnik to shrani v skriptno datoteko in izvede skriptno datoteko.

The #!/bin/bash na začetku določa tolmač, ki bo uporabljen, ko se datoteka izvaja. Čeprav je Bash danes najpogosteje uporabljena lupina, nekateri uporabniki raje uporabljajo lupine, kot so zsh, ki ga je treba podati namesto bash na začetku te datoteke.

Da bi dali dovoljenja za izvajanje za to datoteko zaženite:

chmod +x test.sh

končno, za izvedbo datoteke, zaženi:

./test.sh

Zaključek

The dokler zanka je še ena pomembna lastnost skriptov Bash. Posebej pomemben je v zapletenih skriptih, ko se pričakuje, da bo določen niz programov vrnil status neuspešnega, in je treba izvesti nekatere druge ukaze za beleženje napake, podrobno prikazovanje napake ali preprosto izvajanje nekaterih nadomestnih programov.