Bash-komentosarjat – While Loop

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

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 on a> on suurempi kuin 4.
  • do> : Merkitsee while-silmukan sisällä suoritettavan koodilohkon alun.
  • echo $a> : Tulostaa muuttujan nykyisen arvon a> konsoliin.
  • ((a--))> : Vähentää arvoa a> kirjoittaja 1. Tämä on lyhennetty tapa kirjoittaa a=$((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

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

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

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 arvo i> on pienempi tai yhtä suuri kuin 4.
  • do> : Merkitsee while-silmukan sisällä suoritettavan koodilohkon alun.
  • echo $i> : Tulostaa muuttujan nykyisen arvon i> konsoliin.
  • ((i++))> : Kasvattaa arvoa i> kirjoittaja 1. Tämä on lyhennetty tapa kirjoittaa i=$((i + 1))> .
  • done> : Merkitsee while-silmukan koodilohkon lopun.
while-silmukka Linuxissa

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 ovat n> ja a> , joita molempia seuraa argumentti.
  • do> : Merkitsee silmukan sisällä suoritettavan koodilohkon alun.
  • case '${OPT}' in> : Aloittaa tapauslausekkeen, joka arvioi kohdan kohdan vaihtoehdon arvon getopts> .
  • n) name=${OPTARG};;> : Jos vaihtoehto on -n> , määrittää muuttujalle vastaavan argumentin arvon name> .
  • a) age=${OPTARG};;> : Jos vaihtoehto on -a> , määrittää muuttujalle vastaavan argumentin arvon age> .
  • *) 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ä `-arvoja name`> ja ` age`> saatu komentorivin vaihtoehdoista.
Vaikka silmukka Linuxissa

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

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

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

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

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

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.



Top Artikkelit

Luokka

Mielenkiintoisia Artikkeleita