Bash skriptiranje – medtem ko zanka
A medtem ko zanka je izjava, ki ponavlja blok kode, dokler podani pogoj ni ovrednoten kot neresničen. To izjavo ali zanko lahko uporabimo v našem programu, ko ne vemo, kolikokrat bo pogoj ovrednoten na true, preden bo ovrednoten na false.
Kazalo
- Sintaksa zanke while v skriptiranju BASH
- Primer zanke z uporabo stavka while v Linuxu
- Branje datoteke z zanko while
- Neskončna zanka while
- Medtem ko zanka za ponavljanje za določeno število krat
- Preberite argument ukazne vrstice z možnostmi getopts
- Zanka medtem v slogu C
- Medtem ko zanka za izvajanje operacij v datoteki
- Pisanje v datoteko z uporabo zanke while
- Prekinite in nadaljujte z uporabo zanke while
- Pogosto zastavljena vprašanja
Sintaksa zanke while v skriptiranju BASH
while [ condition ]; do # statements # commands done
Če je pogoj resničen, se izvedejo ukazi znotraj bloka while in se po preverjanju pogoja znova ponovijo. Tudi če je pogoj napačen, se stavki znotraj bloka while preskočijo in stavki za blokom while se izvedejo.
Primer zanke z uporabo stavka while v Linuxu
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
a=7
medtem ko [ $a -gt 4 ];
narediti
odmev $a
((a–))
Končano
echo Izven zanke
Pojasnilo:
-
#!/usr/bin/bash>: Ta vrstica se imenuje shebang in označuje pot do tolmača, ki naj se uporabi za izvedbo skripta. V tem primeru določa, da je treba uporabiti lupino Bash. -
a=7>: Inicializira spremenljivko z imenoma>z vrednostjo 7. -
while [ $a -gt 4 ];>: Zažene zanko while, ki se nadaljuje tako dolgo, kot je vrednosta>je večji od 4. -
do>: Označi začetek bloka kode, ki se izvede v zanki while. -
echo $a>: Natisne trenutno vrednost spremenljivkea>na konzolo. -
((a--))>: Zmanjša vrednosta>z 1. To je stenografski način pisanjaa=$((a - 1))>. -
done>: Označi konec bloka kode za zanko while. -
echo 'Out of the loop'>: Natisne iz zanke na konzolo po zaključku zanke while.
Medtem ko Loop v Linuxu
Če povzamemo, ta skript inicializira spremenljivko ` a`> z vrednostjo 7, nato vstopi v zanko while, ki se nadaljuje, dokler ` a`> je večji od 4. Znotraj zanke natisne trenutno vrednost ` a`> in ga v vsaki ponovitvi zmanjša za 1. Enkrat ` a`> postane 4 ali manj, zanka zapusti in skript natisne Out of the loop na konzolo.
Branje datoteke z zanko while
V BASH lahko preberemo datoteko z zanko while. Z razčlenjevanjem določenih parametrov v pogoj zanke while lahko iteriramo po vrstici datoteke ali po drugih skupinah, kot so znaki ali besede.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
datoteka=temp.txt
med branjem -r vrstica;
narediti
echo $line
končano <$file
Pojasnilo:
-
#!/usr/bin/bash>: Ta shebang vrstica določa, da je treba lupino Bash uporabiti za interpretacijo skripta. -
file=temp.txt>: spremenljivki dodeli niz temp.txtfile>, ki predstavlja ime datoteke za branje. -
while read -r line;>: Sproži zanko while, ki prebere vsako vrstico iz navedene datoteke. -
do>: Označi začetek bloka kode, ki se izvede v zanki while. -
echo $line>: Natisne vsebino spremenljivkeline>, ki predstavlja trenutno vrstico, ki se bere iz datoteke, v konzolo. -
done>: Označi konec bloka kode za zanko while. -
<'$file'>: Preusmeri vnos zanke while iz podane datoteke, v tem primeru temp.txt.
Če povzamemo, ta skript prebere vsako vrstico iz datoteke temp.txt in jo natisne na konzolo, dokler v datoteki ni več nobene vrstice. The -r> možnost z read> ukaz se uporablja za zagotovitev, da se poševnice nazaj v vnosu obravnavajo kot dobesedni znaki.
branje datoteke z uporabo stavka while v Linuxu
Z ukazom read dejansko pridobimo vrstice ali znake iz datoteke. Ukaz za branje je posredovan z argumentom -r, ki ignorira ubežne znake, če se pojavi , in je zato razčlenjen kot njegov. Preberemo vrstico iz datoteke, omenjene za stavkom done. Ukaz read prebere vrstico iz omenjene datoteke in zanke while se končajo, ko je prebrana zadnja vrstica iz datoteke (ni prebrati nobene vrstice).
Tako lahko preberemo vsebino datoteke z uporabo zanke while v BASH.
Neskončna zanka while
Če želite ustvariti neskončno zanko z uporabo stavka zanke while. V zanki while nam ni treba postaviti nobenega pogoja, zato se zanka ponavlja neskončno. Spodaj je primer neskončne zanke while:
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
medtem :
narediti
echo Neskončna zanka
# Za izhod iz skripta lahko pritisnemo Ctrl + C
Končano
Pojasnilo:
-
#!/usr/bin/bash>: vrstica shebang določa, da je treba za interpretacijo skripta uporabiti lupino Bash. -
while :>: Sproži neskončno zanko. The:>(dvopičje) je ukaz, vgrajen v lupino, ki vedno vrne vrednost true, kar dejansko ustvari neskončno zanko. -
do>: Označuje začetek bloka kode, ki se izvede v neskončni zanki. -
echo 'An Infinite loop'>: Natisne niz Neskončna zanka na konzolo v vsaki ponovitvi zanke. -
# We can press Ctrl + C to exit the script>: To je komentar, ki nakazuje, da lahko prekinete skript s pritiskom na Ctrl + C v terminalu. Ctrl + C je običajen način za prekinitev in zaključek izvajanja skriptov v terminalu. -
done>: Označi konec bloka kode za neskončno zanko.
Če povzamemo, ta skript ustvari neskončno zanko, ki neprekinjeno oddaja sporočilo Neskončna zanka na konzolo. Zanko lahko prekinete in skript zapustite s pritiskom na Ctrl + C v terminalu.
Neskončna zanka z uporabo stavka While v Linuxu
Tako se bo zanka while v skriptu ponavljala neskončno dolgo. Ročno lahko prekinemo zanko ali skript s CTRL + C.
Medtem ko zanka za ponavljanje za določeno število krat
Uporabimo lahko zanko while za ponavljanje določenega števila krat, lahko nastavimo pogoj na -le ali manj kot enako številu in zanka se bo ponavljala, dokler iterator ne bo manjši ali enak številu, podanemu v stanje. Poleg tega moramo iterator ročno povečati, da bo iterator zanke deloval, sicer bo zanka trajala večno.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
i=1
# število 4 je lahko omejitev
# ponovi zanko
medtem ko [ $i -le 4 ];
narediti
odmev $i
((i++))
Končano
Pojasnilo:
-
#!/usr/bin/bash>: vrstica shebang določa, da je treba za interpretacijo skripta uporabiti lupino Bash. -
i=1>: Inicializira spremenljivko z imenomi>z vrednostjo 1. -
while [ $i -le 4 ];>: Sproži zanko while, ki se nadaljuje, dokler je vrednosti>je manjše ali enako 4. -
do>: Označi začetek bloka kode, ki se izvede v zanki while. -
echo $i>: Natisne trenutno vrednost spremenljivkei>na konzolo. -
((i++))>: poveča vrednosti>z 1. To je stenografski način pisanjai=$((i + 1))>. -
done>: Označi konec bloka kode za zanko while.
medtem ko v Linuxu
V zgornjem primeru lahko vidimo, da se zanka ponovi določeno število krat. Ker smo števec inicializirali na 1 in je pogoj ponavljanje zanke, dokler iterator ni manjši ali enak številu v tem primeru 4. Tako lahko spremenimo število v pogoju glede na našo zahtevo.
Preberite argument ukazne vrstice z možnostmi getopts
Uporabimo lahko možnosti get ops za branje vnosa iz ukazne vrstice in če obstaja več argumentov, jih lahko preverimo in razčlenimo enega za drugim z uporabo zanke while. getopts je orodje za pridobivanje uporabniških vnosov iz ukazne vrstice. Imamo lahko več možnosti za razčlenjevanje iz ukazne vrstice, z uporabo getopts in zank while pa lahko naredimo program za uporabniški vnos profesionalnega videza.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/bin/bash
medtem ko getopts n:a: OPT
narediti
primer ${OPT} in
n) ime=${OPTARG} ;;
a) starost=${OPTARG} ;;
*) echo Neveljavna možnost
izhod 1 ;;
esac
Končano
printf Ime mi je $name in star sem $age
Pojasnilo:
-
#!/bin/bash>: vrstica shebang določa, da je treba lupino Bash uporabiti za interpretacijo skripta. -
while getopts n:a: OPT>: Sproži zanko, ki uporabljagetopts>za razčlenitev možnosti ukazne vrstice. Navedene možnosti son>ina>, obema pa naj bi sledil prepir. -
do>: Označi začetek bloka kode, ki se izvede znotraj zanke. -
case '${OPT}' in>: Zažene stavek case, ki ovrednoti vrednost možnosti, na katero je naletelgetopts>. -
n) name=${OPTARG};;>: Če je možnost-n>, spremenljivki dodeli vrednost ustreznega argumentaname>. -
a) age=${OPTARG};;>: Če je možnost-a>, spremenljivki dodeli vrednost ustreznega argumentaage>. -
*) echo 'Invalid option'>: Če se odkrije neveljavna možnost, se na konzolo natisne sporočilo o napaki. -
exit 1;;>: Zapre skript z neničelno statusno kodo, ki označuje napako. -
esac>: Konča stavek case. -
done>: Označi konec bloka kode za zanko. -
printf 'My name is $name and am $age years old '>: Natisne oblikovano sporočilo na konzolo z uporabo vrednosti `name`>in `age`>pridobljen iz možnosti ukazne vrstice.
Medtem ko zanka v Linuxu
V tem primeru imamo dve možnosti, in sicer ime in starost, lahko imate več možnosti. Določiti moramo, katero možnost bomo uporabili za stavek switch case in iz ukazne vrstice z možnostjo -shorthand. V tem primeru smo uporabili -n za ime in -a za starost . Imamo tudi privzeto ali neveljavno preverjanje velikih in malih črk, da ne razčlenimo napačnih argumentov. Vrednost možnosti lahko dodelimo z uporabo OPTARG spremenljivka, ki razčleni vrednost, podano možnosti.
Zanka while se tukaj uporablja za ponavljanje, dokler ni nobena možnost posredovana iz ukazne vrstice. Preverimo možnosti -n in -a ter ponavljamo, dokler ne pritisnemo tipke za vrnitev v začetni vrstico ali tipke enter in ni nadaljnjih možnosti za razčlenjevanje.
Zanka medtem v slogu C
V BASH lahko uporabimo zanko while v slogu C, spremenljivke je treba ovrednotiti s slogom BASH, vendar je celotna sintaksa podobna C. Uporabimo lahko operatorje, kot je , <= in tako naprej v pogoju zanke while in s tem se imenuje kot zanka while v slogu C.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim c-style-while.sh
#!/bin/bash
i=0
medtem ko ((i <12))
narediti
odmev $i
((i+=2))
Končano
c-style-medtem ko
V tem primeru lahko vidimo, da ima zanka while pogoj z operatorji, ki niso bash, kot so -le, -ge itd. Namesto tega v pogoju uporabimo operatorje v slogu C. Preostanek zanke je osnovna zanka kot v BASH, spremenljivka ali iterator i se poveča za dva, kot lahko vidimo v zadnjem stavku telesa zanke. Tako se zanka ponovi 5-krat.
Medtem ko zanka za izvajanje operacij v datoteki
Na datoteki lahko izvajamo operacije, na primer branje samo določenega dela datoteke. Če imamo stolpce, ki so oblikovani na določen način, jih lahko uporabimo s spremenljivkami, da jih dodelimo in natisnemo eno vrstico s podatki o času.
Tukaj je primer imena datoteke wh.txt
vim wh.txt
ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim file-while.sh
Vrsta jezika je izdana
Python general 1991
Javascript web 1995
Java mobile 1995
Rust embedded 2010
Pojdi v zaledje 2007
ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim file-while.sh
#!/bin/bash
med branjem a b c
narediti
odmev $b – $a
Končano
Medtem ko zanka v Linuxu
V tem primeru imamo tri vrstice, vsebino preberemo tako, da jo dodelimo spremenljivkam a, b in c, lahko je karkoli želite, vendar jih ne pozabite uporabiti v telesu zanke. Izberemo lahko določen stolpec, kot sta b in a, in ju lahko natisnemo ali izvajamo poljubne operacije. To se sicer ne bo odražalo v datoteki, saj so le lokalne spremenljivke skripta.
Pisanje v datoteko z uporabo zanke while
V datoteko lahko pišemo z uporabniškim vnosom v zanki while. Zanko while lahko uporabimo za ponavljanje, dokler ročno ne izstopimo iz zanke z uporabo CTRL + D, tako da shranimo spremembe v datoteko, ali s CTRL + C, da se izognemo zapisovanju v datoteko. Z ukazom read vnesemo besedilo iz ukazne vrstice in ga razčlenimo v datoteko.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim write-wh.sh
#! /bin/bash
datoteka=wh.txt
echo Vnesite vsebino v datoteko $file
med branjem vrstice
narediti
echo $line>> $file
Končano
medtem ko v Linuxu
Iz zgornjega primera smo torej lahko vnesli besedilo v datoteko z uporabo zanke while in ukaza za branje. Za izhod iz zanke in shranjevanje sprememb v datoteko uporabimo tipki CTRL+D, za izhod iz zanke brez shranjevanja ničesar v datoteko pa lahko uporabimo tipki CTRL+C. Tako vnesemo besedilo iz ukazne vrstice v besedilno datoteko z ukazom read in zanko while.
Prekinite in nadaljujte z uporabo zanke while
Prekini in nadaljuj sta bistvena v programu, ki se ukvarja s stavki zanke, saj nadzorujeta tok stavkov zanke brez izrecnih pogojev.
Izjava Break v zanki While
Stavke za prekinitev uporabljamo za izhod iz zanke, ne da bi čakali, da se pogoj zanke while oceni kot false. Ta stavek je mogoče uporabiti znotraj bloka zanke. To je mogoče uporabiti za izhod iz neskončne zanke s programskim pogojem znotraj zanke in tako ohraniti nadzor nad zanko.
Na primer, imamo skripto, ki šteje od 1 in za vedno. Lahko pa programsko izstopimo iz zanke z uporabo stavka za prekinitev znotraj telesa zanke s pogojem.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
i=1
medtem :
narediti
odmev $i
if [$i -eq 20]; potem
echo To je konec zanke
odmor
biti
((i++))
Končano
Prekini stavek while zanke v Linuxu
Iz skripta in izvajanja lahko vidimo, da smo lahko prekinili ali zapustili neskončno zanko s pogojnim stavkom in stavkom break. Tako se stavek break uporabi, da se nadzorni tok programa/skripta iz notranjosti zanke while prebije iz zanke, ne da bi bil pogoj zanke ocenjen na napačno.
Stavek za nadaljevanje v zanki While
Stavek continue lahko uporabimo, da naredimo nasprotno od stavka break. Skočilo bo na začetek bloka zanke in znova ponovilo. To je mogoče uporabiti za preskok določenih ukazov za določene pogoje in tako omogoča spremembo poteka zanke.
Na primer, če imamo spremenljivko inicializirano na 1 in želimo prikazati samo števila, deljiva s pet, ali v določenem vzorcu, ki sledi pogoju, lahko za to uporabimo stavke continue. To omogoča ponavljanje zanke na želeni način.
Najprej ustvarimo besedilno datoteko z urejevalnikom besedil v Linuxu, v tem primeru uporabljamo urejevalnik besedila `vim`.
vim while.sh
#!/usr/bin/bash
i=1
medtem ko [ $i -lt 30 ];
narediti
((i++))
if [[ $(( $i % 5 )) -ne 0 ]];
potem
nadaljevati
biti
odmev $i
Končano
Stavek Continue v zanki While v linuxu
Kot lahko vidimo, stavek continue skoči na začetek bloka in začne z izvajanjem ukazov tako, da preskoči naslednje ukaze znotraj bloka. Zanka while ponavlja samo vrednost spremenljivka i manj kot 30, zato pogoj if preveri, ali je spremenljivka i je deljivo s 5, in če ni, ponovimo znova z uporabo continue in povečamo vrednost spremenljivke i. The spremenljivka i se odmeva le, če je deljivo s 5, zato je pogoj if ovrednoten kot napačen in ne naletimo na stavko za nadaljevanje in prenos z običajnim tokom zanke. S tem se izognemo beleženju vsake številke in natisnemo samo številke, ki ne sledijo vzorcu ali pogoju v stavku if ali drugih pogojnih stavkih.
Pogosto zastavljena vprašanja
1. Kaj je ` while`> zanke v skriptih Bash?
A while> zanka je stavek nadzornega toka v skriptih Bash, ki omogoča ponavljajoče se izvajanje določenega bloka kode, dokler je podani pogoj resničen. Zanka zagotavlja način za avtomatizacijo ponavljajočih se opravil in je temeljni konstrukt pri skriptiranju in programiranju.
2. Kako deluje sintaksa ` while`> loop look v Bashu?
Osnovna sintaksa a while> zanka v Bashu je naslednja:
medtem ko [pogoj]
narediti
# Koda, ki se izvede, medtem ko je pogoj resničen
Končano
` condition`> je test, ki se izvede pred vsako ponovitvijo zanke. Če je pogoj resničen, se koda znotraj zanke izvede. Če je pogoj napačen, se zanka konča in skript nadaljuje z naslednjim ukazom po ` done`> izjava.
3. Kakšna je vloga ` (( ... ))`> konstruirajte v Bashu while> zanka?
` (( ... ))`> konstrukt v Bashu se uporablja za aritmetične operacije. V kontekstu ` while`> zanke, se pogosto uporablja za vrednotenje aritmetičnih pogojev.
Na primer: ` ((i <10))> `> preveri, ali spremenljivka ` i`> je manj kot 10. To vam omogoča uporabo aritmetičnih izrazov neposredno v pogoju zanke, zaradi česar je še posebej uporabno pri številskih primerjavah.
4. Kako ustvariti neskončno zanko z uporabo ` while`> v Bashu?
Neskončno zanko v Bashu lahko ustvarite tako, da zagotovite pogoj, ki se vedno oceni kot res.
Na primer:
medtem ko je res
narediti
# Koda za neskončno zanko
Končano
Druga možnost je, da v pogoju uporabite neničelno konstanto, na primer ` while [ 1 ]`> , da bi dosegli enak rezultat. Neskončne zanke so uporabne v primerih, ko je potrebno neprekinjeno izvajanje, dokler ni ročno prekinjeno.
Zaključek
V tem članku smo razpravljali o skriptni zanki BASH while, ki se je izkazala za vsestransko orodje za ponavljajoče se izvajanje bloka kode na podlagi določenega pogoja. Osnovna sintaksa vključuje definiranje pogoja v oglatih oklepajih, kar omogoča prilagodljive ponovitve. Članek raziskuje različne uporabe zank while, vključno z branjem iz datotek, ustvarjanjem neskončnih zank, fiksnimi iteracijami, razčlenjevanjem argumentov ukazne vrstice in uporabo stavkov za prekinitev in nadaljevanje. Od sintakse v slogu C do interaktivnega pisanja datotek, vsak primer prikazuje prilagodljivost zanke pri obravnavanju vrste potreb skriptiranja. Ta obsežen pregled poudarja pomen zanke while v skriptiranju BASH, ki zagotavlja robusten mehanizem za nadzorovano ponavljanje in učinkovito izvajanje kode.