Zanka "While" Bash: Vadnica in primeri

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.