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.