Uporaba zanke 'while' v skriptah Bash za ponavljanje ukazov.
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 sintakso zanke za večkratno ponovitev podobne naloge. V tem članku se bomo naučili, kako uporabljati medtem
zanka v Bashu.
Uvod
The medtem
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 se ukaz pogoja ne zažene uspešno (tj. vrne status 0. Vsak ukaz v Linuxu vrne 0 za uspeh in celo število, ki ni nič, za neuspeh).
Če je pogojnih ukazov več, stavek upošteva samo status zadnjega ukaza na seznamu, to pomeni, da se zanka izvaja, dokler se zadnji ukaz na seznamu ne zažene uspešno.
Splošna sintaksa
Splošna sintaksa za medtem
zanka v Bashu je:
medtem ko naredite
Seznam ukazov za izvršitev se bo nadaljeval, dokler se zadnji ukaz na seznamu ukazov za pogoj ne zažene uspešno in zapusti s statusom 0. Ko zadnji ukaz za pogoj ne uspe, se zanka izstopi iz iteracije.
Uporabnik lahko na seznamih ukazov določi 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
ni enako 10.
x=0 medtem ko [[ $x -ne 10 ]] 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
). Tukaj, saj uporabljamo -ne
operator (kar pomeni 'ni enako'), testni ukaz vrne 0, to je uspeh, če vrednost x ni 10, in vrne vrednost, ki ni nič, to je neuspeh, če je vrednost x 10.
Nato v notranjosti narediti ... opravljeno
blok, natisnemo vrednost x in jo povečamo. Ko je vrednost x 10, testni ukaz vrne stanje, ki ni nič, in zanka zapusti.
Opomba: Indeksno spremenljivko, ki se uporablja v zanki while, je treba inicializirati pred zanko while 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 while echo "Seznam datotek:" ls -l [[ $z -ne 5 ]] do echo "Ustvarjanje dir$z..." mkdir dir$z ((z++)) končano
Prvi ukazi echo "Seznam datotek:"
in ls -l
se bo izvedel enkrat v celoti; 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 vrednost z ni 5, testni ukaz vrne status uspeha, zato se zanka nadaljuje. Ukazi pogoja in izvedeni ukazi tečejo po vrstnem redu. Tukaj bo za vsako ponovitev najprej zagnal ukaz echo in ukaz ls v stanju, nato pa bo ukaz 3. pogoja preveril 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 medtem ko [[ $x -ne 10 ]] stori if [[ $x -eq 5 ]] break fi echo $x ((x++)) končano
Zgornja zanka while 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, da preskočite preostali del ponovitve v zanki, če je določen pogoj izpolnjen.
x=0 medtem ko [[ $x -ne 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 medtem
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 medtem
zanka, podobno kot za
in dokler
zanke so pomembna lastnost skriptov Bash. Zanka while ima podobno uporabo kot zanka do, le da se uporablja za zagon nadomestnih ukazov/programov, ko določen program uspe. To pogosto najde svojo uporabnost v naprednih omrežnih skriptih, skriptih za vzdrževanje sistema itd.