Bash skriptiranje – medtem ko zanka

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

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 imenom a> z vrednostjo 7.
  • while [ $a -gt 4 ];> : Zažene zanko while, ki se nadaljuje tako dolgo, kot je vrednost a> je večji od 4.
  • do> : Označi začetek bloka kode, ki se izvede v zanki while.
  • echo $a> : Natisne trenutno vrednost spremenljivke a> na konzolo.
  • ((a--))> : Zmanjša vrednost a> z 1. To je stenografski način pisanja a=$((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

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.txt file> , 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 spremenljivke line> , 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

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

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 imenom i> z vrednostjo 1.
  • while [ $i -le 4 ];> : Sproži zanko while, ki se nadaljuje, dokler je vrednost i> je manjše ali enako 4.
  • do> : Označi začetek bloka kode, ki se izvede v zanki while.
  • echo $i> : Natisne trenutno vrednost spremenljivke i> na konzolo.
  • ((i++))> : poveča vrednost i> z 1. To je stenografski način pisanja i=$((i + 1))> .
  • done> : Označi konec bloka kode za zanko while.
medtem ko v Linuxu

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 uporablja getopts> za razčlenitev možnosti ukazne vrstice. Navedene možnosti so n> in a> , 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 naletel getopts> .
  • n) name=${OPTARG};;> : Če je možnost -n> , spremenljivki dodeli vrednost ustreznega argumenta name> .
  • a) age=${OPTARG};;> : Če je možnost -a> , spremenljivki dodeli vrednost ustreznega argumenta age> .
  • *) 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

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

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

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

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

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

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.



Top Članki

Kategorija

Zanimivi Članki