Bash-komentosarjat – While Loop
A kun silmukka on lause, joka toistuu koodilohkon yli, kunnes määritetty ehto arvioidaan epätosi. Voimme käyttää tätä lausetta tai silmukkaa ohjelmassamme, kun emme tiedä kuinka monta kertaa ehto aikoo arvioida todeksi, ennen kuin se arvioi arvoksi epätosi.
Sisällysluettelo
- BASH-komentosarjan while-silmukan syntaksi
- Silmukka esimerkki käyttäen while-lausetta Linuxissa
- Tiedoston lukeminen while-silmukalla
- Infinite while -silmukka
- Vaikka silmukka iteroitavaksi tietyn määrän kertoja
- Lue komentorivin argumentti getopts-optioilla
- C-tyylinen while-silmukka
- While-silmukka suorittaaksesi toimintoja tiedostolle
- Kirjoitetaan tiedostoon while-silmukalla
- Katkaise ja jatka käyttöä silmukan aikana
- Usein kysytyt kysymykset
BASH-komentosarjan while-silmukan syntaksi
while [ condition ]; do # statements # commands done
Jos ehto on tosi, while-lohkon sisällä olevat komennot suoritetaan ja ne iteroidaan uudelleen ehdon tarkistamisen jälkeen. Myös jos ehto on epätosi, while-lohkon sisältämät käskyt ohitetaan ja while-lohkon jälkeiset lauseet suoritetaan.
Silmukka esimerkki käyttäen while-lausetta Linuxissa
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
a = 7
kun taas [ $a -gt 4 ];
tehdä
kaiku $a
((a–))
tehty
echo Out of the loop
Selitys:
-
#!/usr/bin/bash>: Tätä riviä kutsutaan shebangiksi ja se osoittaa tulkin polun, jota tulee käyttää komentosarjan suorittamiseen. Tässä tapauksessa se määrittää, että Bash-kuorta tulee käyttää. -
a=7>: Alustaa muuttujan nimeltäa>arvolla 7. -
while [ $a -gt 4 ];>: Aloittaa while-silmukan, joka jatkuu niin kauan kuin arvo ona>on suurempi kuin 4. -
do>: Merkitsee while-silmukan sisällä suoritettavan koodilohkon alun. -
echo $a>: Tulostaa muuttujan nykyisen arvona>konsoliin. -
((a--))>: Vähentää arvoaa>kirjoittaja 1. Tämä on lyhennetty tapa kirjoittaaa=$((a - 1))>. -
done>: Merkitsee while-silmukan koodilohkon lopun. -
echo 'Out of the loop'>: Tulostaa silmukasta konsoliin, kun while-silmukka on päättynyt.
Vaikka Loop Linuxissa
Yhteenvetona tämä komentosarja alustaa muuttujan ` a`> arvolla 7, syöttää sitten while-silmukan, joka jatkuu niin kauan kuin ` a`> on suurempi kuin 4. Silmukassa se tulostaa `:n nykyisen arvon a`> ja pienentää sitä yhdellä jokaisessa iteraatiossa. Kerran ` a`> arvoksi tulee 4 tai vähemmän, silmukka poistuu ja komentosarja tulostuu silmukasta konsoliin.
Tiedoston lukeminen while-silmukalla
Voimme lukea tiedoston, jossa on while-silmukka BASHissa. Jäsentämällä tietyt parametrit while-silmukan ehtoon, voimme iteroida tiedoston yli rivi riviltä tai muiden ryhmien, kuten merkkien tai sanojen, mukaan.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
file=temp.txt
luettaessa -r rivi;
tehdä
echo $line
valmis <$file
Selitys:
-
#!/usr/bin/bash>: Tämä shebang-rivi määrittää, että Bash-kuorta tulee käyttää komentosarjan tulkitsemiseen. -
file=temp.txt>: Määrittää muuttujalle merkkijonon temp.txtfile>, joka edustaa luettavan tiedoston nimeä. -
while read -r line;>: Aloittaa while-silmukan, joka lukee jokaisen rivin määritetystä tiedostosta. -
do>: Merkitsee while-silmukan sisällä suoritettavan koodilohkon alun. -
echo $line>: Tulostaa muuttujan sisällönline>, joka edustaa nykyistä riviä, jota luetaan tiedostosta konsoliin. -
done>: Merkitsee while-silmukan koodilohkon lopun. -
<'$file'>: Ohjaa while-silmukan syötteen määritetystä tiedostosta, tässä tapauksessa temp.txt:stä.
Yhteenvetona tämä komentosarja lukee jokaisen rivin temp.txt-tiedostosta ja tulostaa sen konsoliin, kunnes tiedostossa ei ole enää rivejä. The -r> vaihtoehto kanssa read> -komentoa käytetään varmistamaan, että kenoviivat syötteessä käsitellään kirjaimellisina merkeinä.
lukea tiedostoa while-lauseella Linuxissa
Käytämme read-komentoa todella hakemaan rivit tai merkit tiedostosta. Lukukomento välitetään argumentilla -r, joka jättää huomioimatta merkkien poistumisen, jos ilmestyy, ja siksi se jäsennetään sen mukaan. Luimme rivin tiedostosta, joka mainittiin valmiin lausunnon jälkeen. Read-komento lukee rivin mainitusta tiedostosta ja while-silmukat päättyvät, kun tiedoston viimeinen rivi on luettu (ei riviä jää luettavaksi).
Näin voimme lukea tiedoston sisällön BASH:n while-silmukalla.
Infinite while -silmukka
Äärettömän silmukan luominen while-silmukan lausekkeella. Meidän ei tarvitse asettaa ehtoja while-silmukkaan, joten silmukka toistuu loputtomasti. Alla on esimerkki äärettömästä while-silmukasta:
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
sillä aikaa :
tehdä
echo Infinite loop
# Voimme poistua komentosarjasta painamalla Ctrl + C
tehty
Selitys:
-
#!/usr/bin/bash>: Shebang-rivi määrittää, että komentosarjan tulkitsemiseen tulee käyttää Bash-kuorta. -
while :>: Aloittaa äärettömän silmukan. The:>(kaksoispiste) on komentotulkin sisäänrakennettu komento, joka palauttaa aina tosi, luoden tehokkaasti äärettömän silmukan. -
do>: Merkitsee äärettömässä silmukassa suoritettavan koodilohkon alun. -
echo 'An Infinite loop'>: Tulostaa merkkijonon Infinite-silmukan konsoliin silmukan jokaisessa iteraatiossa. -
# We can press Ctrl + C to exit the script>: Tämä on kommentti, joka osoittaa, että voit keskeyttää komentosarjan painamalla Ctrl + C terminaalissa. Ctrl + C on yleinen tapa keskeyttää ja lopettaa käynnissä olevat komentosarjat päätteessä. -
done>: Merkitsee äärettömän silmukan koodilohkon lopun.
Yhteenvetona voidaan todeta, että tämä komentosarja luo äärettömän silmukan, joka toistaa jatkuvasti viestiä Infinite loop konsoliin. Silmukan voi keskeyttää ja komentosarjasta poistua painamalla päätteessä Ctrl + C.
Infinite loop käyttäen While-lausetta Linuxissa
Siten skriptin while-silmukka toistuu äärettömän ajan. Voimme katkaista silmukan tai komentosarjan manuaalisesti painamalla CTRL + C.
Vaikka silmukka iteroitavaksi tietyn määrän kertoja
Voimme käyttää while-silmukkaa iteroitaessamme tietyn määrän kertoja, voimme asettaa ehdoksi -le tai pienempi kuin luku, ja silmukka iteroituu, kunnes iteraattori on pienempi tai yhtä suuri kuin kohdassa annettu luku. kunto. Meidän on myös lisättävä iteraattoria manuaalisesti, jotta silmukkaiteraattori pysyy tikittävänä, tai muuten silmukka jatkuu ikuisesti.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
i=1
# numero 4 voi olla rajana
# iteroi silmukan
while [ $i -le 4 ];
tehdä
echo $i
((i++))
tehty
Selitys:
-
#!/usr/bin/bash>: Shebang-rivi määrittää, että komentosarjan tulkitsemiseen tulee käyttää Bash-kuorta. -
i=1>: Alustaa muuttujan nimeltäi>arvolla 1. -
while [ $i -le 4 ];>: Aloittaa while-silmukan, joka jatkuu niin kauan kuin arvoi>on pienempi tai yhtä suuri kuin 4. -
do>: Merkitsee while-silmukan sisällä suoritettavan koodilohkon alun. -
echo $i>: Tulostaa muuttujan nykyisen arvoni>konsoliin. -
((i++))>: Kasvattaa arvoai>kirjoittaja 1. Tämä on lyhennetty tapa kirjoittaai=$((i + 1))>. -
done>: Merkitsee while-silmukan koodilohkon lopun.
while-silmukka Linuxissa
Yllä olevassa esimerkissä voimme nähdä, että silmukka iteroituu tietyn määrän kertoja. Koska olemme alustaneet laskurin 1:ksi ja ehtona on iteroida silmukkaa, kunnes iteraattori on pienempi tai yhtä suuri kuin luku tässä tapauksessa 4. Näin ollen voimme muuttaa ehdon numeroa vaatimuksemme mukaisesti.
Lue komentorivin argumentti getopts-optioilla
Voimme käyttää get ops -vaihtoehtoja lukeaksesi syötteen komentoriviltä ja jos argumentteja on useita, voimme tarkistaa ne ja jäsentää ne yksitellen käyttämällä while-silmukkaa. getopts on työkalu käyttäjien syöttämiseen komentoriviltä. Meillä voi olla useita vaihtoehtoja jäsentää komentoriviltä, ja getopts- ja while-silmukoilla voimme tehdä ammattimaisen näköisen käyttäjän syöttöohjelman.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/bin/bash
kun getopts n:a: OPT
tehdä
kotelo ${OPT} tuumaa
n) nimi=${OPTARG} ;;
a) ikä=${OPTARG} ;;
*) echo Virheellinen vaihtoehto
uloskäynti 1 ;;
esac
tehty
printf Nimeni on $nimi ja olen $ikä vuotta vanha
Selitys:
-
#!/bin/bash>: Shebang-rivi määrittää, että komentosarjan tulkitsemiseen tulee käyttää Bash-kuorta. -
while getopts n:a: OPT>: Aloittaa silmukan, joka käyttäägetopts>jäsentääksesi komentoriviasetuksia. Määritetyt vaihtoehdot ovatn>jaa>, joita molempia seuraa argumentti. -
do>: Merkitsee silmukan sisällä suoritettavan koodilohkon alun. -
case '${OPT}' in>: Aloittaa tapauslausekkeen, joka arvioi kohdan kohdan vaihtoehdon arvongetopts>. -
n) name=${OPTARG};;>: Jos vaihtoehto on-n>, määrittää muuttujalle vastaavan argumentin arvonname>. -
a) age=${OPTARG};;>: Jos vaihtoehto on-a>, määrittää muuttujalle vastaavan argumentin arvonage>. -
*) echo 'Invalid option'>: Jos virheellinen vaihtoehto havaitaan, tulostaa virheilmoituksen konsoliin. -
exit 1;;>: Poistuu komentosarjasta nollasta poikkeavalla tilakoodilla, mikä osoittaa virheen. -
esac>: Lopettaa tapausselvityksen. -
done>: Merkitsee silmukan koodilohkon lopun. -
printf 'My name is $name and am $age years old '>: Tulostaa muotoillun viestin konsoliin käyttämällä `-arvojaname`>ja `age`>saatu komentorivin vaihtoehdoista.
Vaikka silmukka Linuxissa
Tässä tapauksessa meillä on kaksi vaihtoehtoa, nimittäin nimi ja ikä, sinulla voi olla useita vaihtoehtoja. Meidän on määritettävä, mitä vaihtoehtoa käytämme switch case -lauseita ja komentoriviltä käyttämällä -shortand-vaihtoehtoa. Tässä tapauksessa olemme käyttäneet -n nimeksi ja - ikäisekseen . Meillä on myös oletusarvoinen tai virheellinen tapaustarkistus sen varmistamiseksi, ettemme jäsennä vääriä argumentteja. Voimme määrittää vaihtoehdon arvon käyttämällä OPTARG muuttuja, joka jäsentää vaihtoehdolle annetun arvon.
Tässä while-silmukkaa käytetään iteroimaan, kunnes komentoriviltä ei välitetä valintoja. Tarkistamme vaihtoehdot -n ja -a ja toistamme, kunnes rivinvaihto- tai enter-näppäintä painetaan eikä muita vaihtoehtoja ole jäsennettävänä.
C-tyylinen while-silmukka
Voimme käyttää C-tyylistä while-silmukkaa BASHissa, muuttujat täytyy arvioida BASH-tyylillä, mutta yleinen syntaksi tuntuu C:ltä. Voimme käyttää operaattoreita, kuten , <= ja niin edelleen while-silmukan ehdoissa ja siten se kutsutaan C-tyylistä while-silmukkaa.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim c-style-while.sh
#!/bin/bash
i = 0
kun ((i <12))
tehdä
echo $i
((i+=2))
tehty
c-tyyli-while
Tässä esimerkissä voimme nähdä, että while-silmukalla on ehto ei-bash-operaattoreiden kanssa, kuten -le, -ge jne. Sen sijaan käytämme ehdossa C-tyylisiä operaattoreita. Loput silmukasta on perussilmukka, kuten BASHissa, muuttujaa tai iteraattoria i kasvatetaan kahdella, kuten voimme nähdä silmukan rungon viimeisessä lauseessa. Siten silmukka toistuu yli 5 kertaa.
While-silmukka suorittaaksesi toimintoja tiedostolle
Voimme suorittaa tiedostolle toimintoja, kuten lukea vain tietyn osan tiedostosta. Jos meillä on tietyllä tavalla muotoiltuja sarakkeita, voimme määrittää ne muuttujien avulla ja tulostaa ne yhden rivin datan ajan.
Tässä on esimerkkitiedoston nimi wh.txt
vim wh.txt
Luomme tekstitiedoston Linuxin tekstieditorilla, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim file-while.sh
Kielityyppi julkaistu
Python yleinen 1991
Javascript web 1995
Java mobiili 1995
Rust upotettu 2010
Siirry backend 2007
Luomme tekstitiedoston Linuxin tekstieditorilla, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim file-while.sh
#!/bin/bash
kun luet a b c
tehdä
kaiku $b – $a
tehty
Vaikka silmukka Linuxissa
Tässä esimerkissä meillä on kolme riviä, luemme sisällön määrittämällä ne muuttujiin a,b ja c, se voi olla mitä tahansa, mutta muista käyttää niitä silmukan rungossa. Voimme valita tietyn sarakkeen, kuten b ja a, ja voimme tulostaa tai suorittaa mitä tahansa toimintoja niille. Tämä ei kuitenkaan näy tiedostossa, koska ne ovat vain paikallisia komentosarjamuuttujia.
Kirjoitetaan tiedostoon while-silmukalla
Voimme kirjoittaa tiedostoon käyttäjän syöttämällä aikasilmukan. Voimme käyttää while-silmukkaa iteroimaan, kunnes poistumme silmukasta manuaalisesti näppäinyhdistelmällä CTRL + D tallentamalla muutokset tiedostoon tai CTRL + C:llä välttääksemme tiedostoon kirjoittamisen. Käytämme read-komentoa syöttämään tekstiä komentoriviltä ja jäsentämään sen tiedostoon.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim write-wh.sh
#! /bin/bash
file=wh.txt
echo Syötä sisältö tiedostoon $file
rivin lukemisen aikana
tehdä
echo $line>> $file
tehty
while-silmukka Linuxissa
Joten yllä olevasta esimerkistä pystyimme syöttämään tekstiä tiedostoon while-silmukan ja lukukomennolla. Poistuaksesi silmukasta ja tallentaaksemme muutokset tiedostoon, käytämme näppäimiä CTRL+D, ja poistuaksesi silmukasta tallentamatta mitään tiedostoon, voimme käyttää näppäimiä CTRL + C. Siten syötetään teksti komentoriviltä tekstitiedostoon käyttämällä read-komentoa ja while-silmukkaa.
Katkaise ja jatka käyttöä silmukan aikana
Katko ja jatka ovat välttämättömiä ohjelmassa, joka käsittelee silmukkakäskyjä, koska ne ohjaavat silmukkakäskyjen kulkua ilman erityisiä ehtoja.
Katko lauseke While Loopissa
Käytämme break-lauseita poistuaksemme silmukasta odottamatta, että while-silmukan ehto muuttuu epätosi. Tätä lausetta voidaan käyttää silmukkalohkossa. Tätä voidaan käyttää poistumaan äärettömästä silmukasta, jossa on ohjelmallinen ehto silmukan sisällä, ja siten ylläpitää silmukan hallintaa.
Meillä on esimerkiksi skripti, joka laskee yhdestä ikuisesti. Mutta voimme ohjelmallisesti irtautua silmukasta käyttämällä break-lausetta silmukan rungossa ehdolla.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
i=1
sillä aikaa :
tehdä
echo $i
jos [$i -eq 20]; sitten
echo Tämä on silmukan loppu
tauko
olla
((i++))
tehty
Katkolauseke silmukan aikana Linuxissa
Käsikirjoituksesta ja suorituksesta voimme nähdä, että pystyimme katkaisemaan tai poistumaan äärettömästä silmukasta ehdollisen lauseen ja break-lauseen avulla. Siten break-lausetta käytetään ohjelman/komentosarjan ohjausvirtauksen saamiseen while-silmukan sisältä murtautumaan silmukasta ilman, että silmukan ehto muuttuu epätosi.
Jatka lausetta While Loopissa
Voimme käyttää jatka-lausetta tehdäksemme päinvastoin kuin break-lause. Se hyppää silmukkalohkon alkuun ja toistaa uudelleen. Tätä voidaan käyttää ohittamaan tiettyjä komentoja tietyissä olosuhteissa ja siten mahdollistaa muutoksen silmukan kulkua.
Esimerkiksi, jos meillä on muuttuja, joka on alustettu 1:ksi ja haluamme näyttää vain viidellä jaolliset luvut tai tietyssä ehdon mukaisessa mallissa, voimme käyttää jatkamislauseita tehdäksesi juuri sen. Tämä mahdollistaa iteroinnin silmukan yli halutulla tavalla.
Ensin luomme tekstitiedoston tekstieditorilla Linuxissa, tässä tapauksessa käytämme tekstieditoria 'vim'.
vim while.sh
#!/usr/bin/bash
i=1
kun taas [ $i -lt 30 ];
tehdä
((i++))
jos [[ $(( $i % 5 )) -ne 0 ]];
sitten
jatkaa
olla
echo $i
tehty
Jatka lausetta While-silmukassa linuxissa
Kuten näemme jatka-lauseesta, hyppää lohkon alkuun ja aloittaa komentojen suorittamisen ohittamalla seuraavat komennot lohkon sisällä. While-silmukka toistuu vain arvon muuttuja i on alle 30, joten jos-ehto tarkistaa, onko muuttuja i on jaollinen 5:llä, ja jos se ei ole, iteroidaan uudestaan käyttämällä jatka-näppäintä ja suurenna muuttujan i arvoa. The muuttuja i saa kaiun vain, jos se on jaollinen viidellä, joten if-ehto arvioidaan epätosi, emmekä kohtaa jatka-lausetta ja kuljettaa silmukan normaalin kulun mukana. Näin vältetään jokaisen numeron kirjaaminen lokiin ja tulostetaan vain luvut, jotka eivät noudata if-lauseen tai muiden ehdollisten lausekkeiden kaavaa tai ehtoa.
Usein kysytyt kysymykset
1. Mikä on ` while`> silmukka Bash-komentosarjassa?
A while> silmukka on Bash-komentosarjan ohjausvirtalause, joka sallii tietyn koodilohkon suorittamisen toistuvasti, kunhan määritetty ehto on tosi. Silmukka tarjoaa tavan automatisoida toistuvia tehtäviä, ja se on perusrakenne komentosarjassa ja ohjelmoinnissa.
2. Miten `:n syntaksi toimii while`> loop look bashissa?
A:n perussyntaksi while> silmukka Bashissa on seuraava:
kun [ehto]
tehdä
# Suoritettava koodi, kun ehto on tosi
tehty
` condition`> on testi, joka suoritetaan ennen jokaista silmukan iteraatiota. Jos ehto on tosi, silmukan sisällä oleva koodi suoritetaan. Jos ehto on epätosi, silmukka sulkeutuu ja komentosarja jatkuu seuraavalla komennolla `:n jälkeen done`> lausunto.
3. Mikä on `:n rooli (( ... ))`> rakentaa Bashissa while> silmukka?
` (( ... ))`> Constructia Bashissa käytetään aritmeettisiin operaatioihin. `:n yhteydessä while`> silmukka, sitä käytetään usein arvioimaan aritmeettisia ehtoja.
Esimerkiksi: ` ((i <10))> `> tarkistaa, onko muuttuja ` i`> on pienempi kuin 10. Tämän avulla voit käyttää aritmeettisia lausekkeita suoraan silmukkaehdoissa, mikä tekee siitä erityisen hyödyllisen numeerisia vertailuja käsiteltäessä.
4. Kuinka luoda ääretön silmukka käyttämällä ` while`> Bashissa?
Ääretön silmukka Bashissa voidaan luoda tarjoamalla ehto, jonka arvo on aina tosi.
Esimerkiksi:
vaikka totta
tehdä
# Koodi äärettömälle silmukalle
tehty
Vaihtoehtoisesti voit käyttää ehdossa nollasta poikkeavaa vakiota, kuten ` while [ 1 ]`> , saavuttaaksesi saman tuloksen. Äärettömät silmukat ovat hyödyllisiä tilanteissa, joissa tarvitaan jatkuvaa suoritusta, kunnes se keskeytetään manuaalisesti.
Johtopäätös
Tässä artikkelissa keskustelimme BASH-komentosarjasta while-silmukasta, joka osoittautuu monipuoliseksi työkaluksi koodilohkon suorittamiseen toistuvasti tietyn ehdon perusteella. Perussyntaksi sisältää ehdon määrittämisen hakasulkeissa, mikä mahdollistaa joustavat iteraatiot. Artikkelissa tarkastellaan erilaisia while-silmukoiden sovelluksia, mukaan lukien tiedostoista lukeminen, äärettömien silmukoiden luominen, kiinteät iteraatiot, komentoriviargumenttien jäsentäminen ja break and jatka -käskyjen hyödyntäminen. C-tyylisestä syntaksista vuorovaikutteiseen tiedostokirjoitukseen jokainen esimerkki osoittaa silmukan mukautuvuuden erilaisiin komentosarjatarpeisiin. Tämä kattava yleiskatsaus korostaa while-silmukan merkitystä BASH-komentosarjassa, mikä tarjoaa vankan mekanismin hallittuun toistoon ja tehokkaaseen koodin suorittamiseen.