Bashissa käytetään kolmenlaisia silmukoita eri tarkoituksiin. Nämä ovat varten, kun Ja kunnes silmukoita. Näiden silmukoiden eri käyttötarkoitukset on selitetty käyttämällä tässä artikkelissa 30 eri esimerkkiä.
Bash-silmukoiden käyttötarkoitukset:
- käyttämällä silmukkaa luettelon kohteiden lukemiseen
- käyttäen silmukkaa joukon lukemiseen
- käyttäen silmukkaa merkkijonoluettelon lukemiseen välilyönneillä
- käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue
- käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue taaksepäin
- käyttäen silmukkaa, jossa on 3 osaa ja kuntolaskuria
- käyttäen silmukkaa, jossa on 3 osaa ja useita olosuhteita ja toimintoja pilkulla
- käyttäen ääretöntä silmukkaa
- käyttäen silmukkaa, jossa on ehdollinen katkos ja jatketaan
- käyttäen silmukkaa, jossa on ehdollinen katkos ja jatketaan
- käyttäen silmukkaa luettaessa tiedostonimiä globbaamalla
- käyttäen loop to read output from find Command
- using for loop to read filenames of a directory recursively
- using for loop to read filenames of a directory recursively with condition
- running the loop until the loop tiedosto on olemassa
- käyttäen pakettiluettelon komennon
- käyttäen for Loopia tiedoston jokaisen rivin lukemiseen
- käyttäen for Loopia tiedoston jokaisen rivin lukemiseen ehdollisen vastaavuuden perusteella
- käyttäen while loop with a counter
- käyttäen while loop with a user input and quit valittaessa poistumista valikosta
- käyttäen kunnes silmukka laskurilla
- lopeta kunnes silmukka perustuu käyttäjän syötteeseen
- käyttäen sisäkkäisiä kun silmukoita
- käyttäen kunnes silmukka nukkua/odottaa Taustatehtävää aloitettiin skriptissä
- käyttäen while loop-silmukkaa lukeaksesi pid-lukua ps-tulosteelta, jota ei ole päätetty
- hakien minkä tahansa merkkijonon tiedostosta käyttäen Loopia ja poistumista
- yhdistämällä bash ja curl verkko-osoitteen tietojen arviointiin
- lukemiseen portista, jonka netcat lähetti käyttäen Loopia
- Ping URL: n lukemiseen Loopilla
- käynnissä alkuun eräajotilassa käyttäen silmukkaa ja tietuetulosta
yhdistetään vaikka silmukoita getopts
- käyttäen for Loopia luettelon kohteiden lukemiseen
- käyttämällä for loop-toimintoa matriisin lukemiseen
- käyttäen silmukkaa lukeaksesi luettelon merkkijonoista, joiden välilyönnit ovat
- käyttäen silmukkaa {START..LOPUSSA..INKREMENT} range
- käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue taaksepäin
- käyttäen for Loopia, jossa on 3 osaa ja kuntolaskuria
- käyttäen silmukkaa, jossa on 3 osaa ja useita ehtoja ja toimintoja pilkulla
- käyttäen Infinite for loop
- käyttämällä silmukkaa ehdollisella katkolla ja jatka
- käyttämällä for loop-toimintoa tiedostonimien lukemiseen globbing
- käyttämällä for loop-toimintoa find-komennon tulosteen lukemiseen
- käyttämällä for loop-toimintoa kansion tiedostonimien lukemiseen rekursiivisesti
- käyttämällä for loop-toimintoa hakemiston tiedostonimien lukemiseen rekursiivisesti ehdolla
- silmukan suorittaminen, kunnes tiedosto on olemassa
- käyttäen pakettiluettelon komennon
- käyttäen silmukkaa tiedoston
- käyttämällä for loop-silmukkaa tiedoston rivien lukemiseen ehdollisella täsmäyksellä
- käyttämällä while loop with a counter
- käyttämällä while Loopia käyttäjän syötöllä ja lopeta, kun valitset poistumisen valikosta
- yhdistämällä vaikka silmukoita getoptsin kanssa
- käyttäen kunnes silmukka laskurin kanssa
- lopeta, kunnes silmukka käyttäjän syötön perusteella
- käyttäen sisäkkäisiä silmukoita
- käyttäen komentosarjassa
- käyttämällä while loop-silmukkaa pid: n lukemiseen ps-tulosteelta, jota ei ole päätetty
- etsii mitä tahansa merkkijonoa tiedostosta silmukan avulla ja poistu
- Yhdistä bash ja curl arvioidaksesi tietoja URL-osoitteesta
- tietojen lukeminen netcatin lähettämästä portista käyttäen loop
- ping URL käyttäen loop
- Running top eräajotilassa käyttäen loop ja record output
- johtopäätös
käyttäen for Loopia luettelon kohteiden lukemiseen
helpointa ” for ” – silmukan käyttöä on merkkijonojen tai numeeristen tietojen lukeminen. Numeeristen tietojen luettelo iteroidaan käyttämällä for – in-silmukkaa seuraavassa esimerkissä. Tässä neljä numeroa luetaan muuttujaan, $n jokaisessa silmukan vaiheessa ja tulostetaan. Luo bash-tiedosto seuraavalla skriptillä ja suorita päätteestä.
# for-in loop to read a list of numbers
for n in 10 11 17 25
do
# Print each number
echo ”the number is $n”
done
Output:
Run the script.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttämällä for loop-toimintoa matriisin lukemiseen
mikä tahansa matriisimuuttuja sisältää luettelon tiedoista, jotka voidaan iteroida helposti for-in-silmukan avulla. Seuraavassa esimerkissä for – in-silmukan käyttö merkkijonodatan lukemiseen. Tässä, jokainen array arvo noudetaan muuttuja, $kieli ja tulostaa viestin perustuu kielen kussakin iteraatiossa.
languages=(”Bash PERL Python PHP”)
for language in $languages
do
if
then
echo ”$language is a web programming language”
else
echo ”$language is a scripting language”
fi
done
lähtö:
run the script.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttäen silmukkaa lukeaksesi luettelon merkkijonoista, joiden välilyönnit ovat
kun merkkijonon luettelo luetaan for – in-silmukalla ja mikä tahansa merkkijonon arvo sisältää tilaa, arvot jaetaan sanoihin avaruuden perusteella, jos merkkijonon arvoa ei lainata yksi-tai kaksoislainauksella. Seuraavassa esimerkissä näytetään, kuinka luettelon merkkijonoista, joissa on tilaa, voi lukea for-in-silmukalla. Tässä luettelossa on yksi arvo, jossa on tilaa ja se on painettu ulostulossa olevalla välilyönnillä.
#for-in loop to read list of strings with space
for os in ”Ubuntu” ”Linux Mint” ”Fedora” ”CentOS”
do
#Print every string
echo ”Operating System – $os”
done
Output:
Run the script.
tässä merkkijonon arvo, ”Linux Mint” on painettu oikein.
Siirry alkuun
käyttäen silmukkaa {START..LOPUSSA..INKREMENT} range
toinen for – in-silmukan käyttö on lukea range array. Seuraavassa esimerkissä for-silmukkaa käytetään lukemaan vaihteluväli 10-30, jota lisätään 5: llä kussakin vaiheessa. Seuraavaksi skripti tulostaa ne alueen numerot, jotka ovat jaollisia 10: llä.
# Read a range using for loop
for num in {10..30..5}
do
# Tarkista, että luku on jaollinen 10: llä tai ei
jos (($num%10==0 ))
sitten
kaiku ”$num on jaollinen 10: llä ”
fi
tehty
Lähtö:
Suorita skripti.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue taaksepäin
tietoalue voidaan lukea taaksepäin käyttämällä for – in-silmukkaa, jossa alueen lähtöarvo on suurempi kuin alueen loppuarvo. Seuraavassa esimerkissä vaihteluväli alkaa 50: stä ja päättyy 30: een. Arvo $num pienenee 10 jokaisessa vaiheessa silmukan. Skripti tulostaa ne numerot alueelta, jotka ovat jaollisia 5: llä ja 10: llä.
echo ”seuraavat numerot ovat jaollisia 5: llä ja 10: llä”
# Lue alue käyttäen silmukkaa
num: lle {50: ssä..30..10}
do
# Tarkista, että luku on jaollinen 5: llä ja 10: llä tai ei
jos (($num%5==0 && $num%10==0 ))
sitten
echo – n ”$num ”
fi
done
echo ”Done”
Lähtö:
Run the script.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttäen for Loopia, jossa on 3 osaa ja kuntolaskuria
bash tukee Loopia, jossa on kolme osaa kuten muissakin standardiohjelmointikielissä. Ensimmäinen osa sisältää alustuksen, toinen osa sisältää irtisanomisehdon ja kolmas osa sisältää lisäys-tai säätöoperaation. Tätä silmukkaa käytetään pääasiassa silloin, kun iteraation määrä on aiemmin määritelty. Seuraavassa esimerkissä for loop iteroidaan 50 kertaa ja lasketaan summa 1-50. Summauksen tulos tulostetaan tulosteena.
# alustaa muuttuja
sum=0
# Silmukka iteroituu 50 kertaa
varten (( N=1; n<=50; n++ ))
do
# lisää summan arvo seuraavalla arvolla n
((sum=$sum+$n))
tehty
# tulosta
Echo ”1-50: n summa on $sum”
Lähtö:
Run the script.
1-50: n summa näkyy tuotoksessa.
Siirry alkuun
käyttäen silmukkaa, jossa on 3 osaa ja useita ehtoja ja toimintoja pilkulla
kolmiosaiselle silmukalle voidaan määritellä useita alustuksia, päättymisehtoja ja toimintoja. Seuraava esimerkki osoittaa tämän tyyppisen silmukan käytön. Tässä, $x ja $y muuttujat alustetaan 5 ja 25. Silmukka jatkuu, kunnes arvo $x on pienempi tai yhtä suuri kuin 20 ja arvo $y on suurempi kuin 5. Arvo $x kasvaa 5: llä ja arvo $y: llä vähenee 5: llä jokaisessa silmukan iteraatiossa. Kunkin vaiheen nykyinen arvo $x ja $y tulostetaan tulosteena.
# Silmukka iteroituu kahden ehdon perusteella
((x=5, y=25; x<=20 && y>5; x+=5, y-=5 ))
do
kaiku ”nykyinen arvo x=$x ja y=$y”
tehty
Lähtö:
Suorita skripti.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttäen Infinite for loop
kun Mikä tahansa silmukka on määritelty ilman päättymisehtoa, silmukka toimii äärettömänä silmukkana. Seuraava esimerkki osoittaa äärettömän käytön silmukalle, joka ei sisällä alustus -, päättymis-ja toimintaosia. Tämä silmukkatyyppi määritellään puolipisteellä (; ;). Seuraava skripti jatkaa silmukkaa, kunnes käyttäjätyypit’ lopettavat ’ syötteenä. Skripti tulostaa minkä tahansa numeron 1-20, joka ottaa syötteenä muuten se tulostaa ”Numero on Alueen ulkopuolella”
# Declaration infinite loop
for (( ; ; ))
do
# Take a input
echo ”Enter a number between 1 to 20”
read n
# Set the termination condition of the loop
if
then
echo ”Program terminated”
exit 0
fi
# Check the number range
if (( $n < 1 || $n > 20 ))
then
Echo ”the number is out of range”
else
echo ”the number is $n”
Fi
done
output:
run the script.
tässä 6 otetaan ensimmäisenä syötteenä, joka on kelvollinen numero, 22 otetaan toisena syötteenä, joka on virheellinen numero ja quit otetaan kolmantena syötteenä, joka lopetti skriptin.
Siirry alkuun
käyttämällä silmukkaa ehdollisella katkolla ja jatka
”jatka” – lausetta käytetään jättämään pois osa silmukasta minkä tahansa ehdon perusteella ja ”tauko” – lausetta käytetään päättämään silmukka minkä tahansa ehdon perusteella. Seuraavassa esimerkissä esitetään näiden lauseiden käyttö for-silmukassa. Tässä silmukassa luetaan merkkijonodataa ja jokainen listan arvo tallennetaan muuttujaan, $food. Kun $ruoan arvo on ’keitto’, niin se jatkaa silmukkaa ilman arvon painamista. Kun arvo $ruoka on ’Pasta’ niin se lopettaa silmukan. Kun $ruoka sisältää mitään muuta arvoa kuin’ keitto ’ja’ Pasta ’ niin se tulostaa arvon. Niin, skripti tulostaa kaksi arvoa luettelosta tulosteena.
# Declare a loop with a list
for food in Pizza Soup Burger Pastanuudelit
do
# Set condition for continue
if
then
continue
# Set condition for break
elif
then
break
else
echo ”$food is my favorite”
fi
tehty
Lähtö:
suorita käsikirjoitus.
tässä listasta on jätetty pois kaksi arvoa. ”Keittoa” ei paineta jatkuvuuslauseketta varten eikä ”pastaa” taukolauseketta varten.
Siirry alkuun
käyttämällä for loop-toimintoa tiedostonimien lukemiseen globbing
tiedostonimet tai tiedoston tiettyä sisältöä voi etsiä globbing-ohjelmalla. Se käyttää erityyppisiä yleismerkkejä sovittaakseen minkä tahansa tiedostonimen tai etsiessään sisältöä tiedostossa. Kaikki nykyisen sijainnin txt-laajennuksella varustetut tiedostot haetaan tulostettuna seuraavalla esimerkillä. Kun suoritat skripti sitten kaikki vastaavat tiedostonimet tulostetaan ilman newline tulosteena.
# Loop etsii kaikki tekstitiedostot ja tallentaa jokaisen tiedostonimen $ – tiedostoon
tiedostolle ”*.txt”;
do
# Print the filename
echo $file;
done
Output:
Run the script.
Siirry alkuun
käyttämällä for loop-toimintoa find-komennon tulosteen lukemiseen
”find” – komentoa käytetään Bashissa eri tarkoituksiin. Seuraavassa esimerkissä ”etsi” – komentoa käytetään kaikkien tekstitiedostojen lukemiseen nykyisestä sijainnista. Tässä,’ – name ’ mahdollisuus käyttää merkkiherkkään hakuun. Niin, skripti tulostaa ne tiedostonimet nykyisen sijainnin, joka on ’.TXT: n laajennus millä tahansa nimellä. Tässä IFS-muuttujaa käytetään määrittelemään uusi rivi kenttäerottimeksi ja tulostamaan $ – tiedoston arvo jokaiselle riville.
# Set field separator
IFS=$’\n’;
# Read the files of a directory
for file in $(find-name ”*.txt”); do
echo $file
done
#Uunit field separator
unset IFS;
Lähtö:
Run the script.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttämällä for loop-toimintoa kansion tiedostonimien lukemiseen rekursiivisesti
”Etsi” – komennolla voidaan lukea kaikki tietyn kansion tiedostot ja alikansiot. Seuraavassa esimerkissä näytetään ”etsi” – komennon käyttö kaikkien tiedostonimien ja hakemistojen lukemiseen ”mydir” – hakemiston alla. Tässä, IFS muuttuja käytetään tulostaa arvo $tiedostonimi ”newline” kuten edellinen esimerkki.
# Set field separator
IFS=$’\n’;
# Read the files of a directory
for filename in $(find ”mydir”)
do
echo ”$filename ”
done
# Unset field separator
unset IFS;
Lähtö:
Run the script.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttämällä for loop-toimintoa hakemiston tiedostonimien lukemiseen rekursiivisesti ehdolla
’ for ’loop’ Etsi ’ – komennolla voidaan tulostaa som +
e hakemiston tietyt tiedostonimet minkä tahansa ehdon perusteella. ”etsi” – komentoa käytetään seuraavan esimerkin ehdon kanssa. Se etsii vain tekstin tiedostonimiä mydir hakemistosta. Tässä’ – iname ’- vaihtoehtoa käytetään’ Etsi ’ – komennon kanssa tapauksen epätarkalle haulle. Tämä tarkoittaa, että kaikki tiedostot laajennus ’ txt ’ tai ’ TXT ’ sovitetaan ja tulostetaan tulosteena. Tässä, IFS muuttuja käytetään tulostaa arvo $tiedostonimi ”newline” kuten edellinen esimerkki.
# Set field separator
IFS=$’\n’;
# Lue kaikki hakemiston tekstitiedostot
tiedostonimelle $(etsi mydir-iname ’*.txt’); do
echo ”$filename”
done
# Unset field separator
unset IFS;
Lähtö:
suorita seuraava komento, joka näyttää mydir-hakemiston tiedostojen ja kansioiden luettelon.
Suorita skripti.
hakemistossa on kolme tekstitiedostoa, jotka näkyvät tulosteessa.
Siirry alkuun
silmukan suorittaminen, kunnes tiedosto on olemassa
tiedostonimi on olemassa tai sitä ei ole, on valittu seuraavasta esimerkistä käyttämällä infinite for Loopia. Tässä skriptissä tiedostonimi otetaan syötteenä jokaisessa silmukan iteraatiossa ja testataan, onko tiedostonimi olemassa nykyisessä sijainnissa vai ei. Jos tiedostonimi on olemassa, skripti tulostaa” tiedosto on olemassa ” ja jatkaa silmukkaa muuten se lopettaa silmukan tulostamalla viestin, ’tiedostoa ei ole olemassa’.
# Define infinite loop
for(( ; ; ))
do
# Input a filename
echo ”Enter a file name”
read file
# Check the file exist or Not
if
then
echo ”tiedostonimi ei ole olemassa”
exit 0
else
kaiku ”tiedosto on olemassa”
fi
tehty
Lähtö:
suorita skripti.
olemassa oleva tiedostonimi annetaan ensimmäisenä syötteenä ja ei-olemassa oleva tiedostonimi toisena komentojonon päättäneenä tulosteena.
Siirry alkuun
käyttäen pakettiluettelon komennon
tulosteeseen perustuvaa silmukkaa järjestelmään asennettujen pakettien tiedot voidaan hakea komennolla ”apt list – – installed”. ”for” – silmukkaa käytetään seuraavassa esimerkissä lukemaan asennetut pakettitiedot pakettiluettelon komennosta ja tulostamaan kunkin paketin tiedot kullakin rivillä. IFS muuttuja käytetään tässä tulostaa arvo $rivi ”newline” kuten edellinen esimerkki.
IFS = $’\n’;
# Read file line by line
for line in $(apt list –installed)
do
echo ”$line ”
done
# Unset field separator
unset IFS;
Lähtö:
Run the script.
tuloste näyttää asennettujen pakettien luettelon.
Siirry alkuun
käyttäen silmukkaa tiedoston
rivien lukemiseen on monia tapoja lukea tiedostoa Bashissa. ”cat” – komentoa käytetään seuraavassa esimerkissä tiedoston lukemiseen, temp.txt. Jokainen rivi tiedoston tallentaa muuttuja, $rivi ja tulostaa rivin kunkin iteraation for silmukka. IFS muuttuja käytetään tässä tulostaa arvo $rivi ”newline” kuten edellinen esimerkki.
# Set field separator
IFS=$’\n’;
# Read file line by line
for line in $(cat temp.txt)
do
echo ”$line ”
done
# Unset field separator
unset IFS;
Lähtö:
Run the script.
Siirry alkuun
käyttämällä for loop-silmukkaa tiedoston rivien lukemiseen ehdollisella täsmäyksellä
jos haluat tulostaa tiettyjä rivejä tiedostosta vain silloin sinun on lisättävä silmukan sisään, jota käytetään tiedoston lukemiseen. Seuraavassa esimerkissä tulostetaan kunkin ”weekday” – rivin formatoitu ulostulo.TXT: n tiedosto perustuu ehtoon. Jos jokin rivi tiedoston sisältää arvon, ’ sunnuntai ’niin se tulostaa’ loma ’viesti muuten se tulostaa’ työpäivä ’ viesti.
riville $(cat weekday.txt)
do
#vertaa arvoa merkkijonotiedolla
jos
niin
echo ”$line is a holiday”
else
echo ”$line is a working day”
fi
tehty
Lähtö:
Suorita skripti.
seuraava ulostulo ilmestyy komentosarjan suorittamisen jälkeen.
Siirry alkuun
käyttämällä while loop with a counter
$counter-muuttujaa käytetään mitä tahansa silmukkaa, jolla ohjataan silmukan iterointia. Seuraavassa esimerkissä esitetään while-silmukan käyttö laskurin kanssa. Tässä $counter alustetaan arvoon 1 Ja kun silmukka iteroituu 5 kertaa ja tulostaa arvon $counter kussakin iteraatiossa. $laskuri kasvaa 1 kussakin vaiheessa päästä irtisanominen kunnossa silmukan.
# alustaa laskuri
counter=1
# iteroi silmukka 5 kertaa
kun taas
do
kaiku ”Counter value = $counter”
((counter++))
tehty
Lähtö:
Suorita skripti.
Siirry alkuun
käyttämällä while Loopia käyttäjän syötöllä ja lopeta, kun valitset poistumisen valikosta
’while’ Loopia käytetään seuraavassa esimerkissä 5 vaihtoehdon valikon näyttämiseen. Neljää ensimmäistä vaihtoehtoa käytetään suorittamaan neljä aritmeettista operaatiota käyttäjän syötteen perusteella ja viimeistä vaihtoehtoa käytetään komentosarjasta poistumiseen. Valikko ilmestyy sen jälkeen, kun kaksi numeroa on syötetty. Jos käyttäjä valitsee ’1’, syöttönumerot lisätään. Jos käyttäjä valitsee ’2’, toinen tulonumero vähennetään ensimmäisestä tulonumerosta. Jos käyttäjä valitsee ’3’, niin tulonumerot kerrotaan ja jos käyttäjä valitsee’ 4′, ensimmäinen tulonumero jaetaan toisella tulonumerolla.
# Take two numbers
echo ”Enter a number”
read n1
echo ”Enter a number”
read n2
# Declare an infinite loop
while true
do
# Display the menu
echo ”1. Lisäksi ”
kaiku ” 2. Vähennyslasku ”
kaiku ” 3. Kertolasku ”
kaiku ” 4. Divisioona ”
kaiku ” 5. Poistu ”
echo-n ” Valitse mikä tahansa numero :”
read input
# suorita operaatio valitun arvon perusteella
if ]
then
((result=n1+n2))
elif ]
then
then
((result=n1*$n2))
elif]
then
((result=$n1 * $n2) 8722>Elif ]
then
((tulos=$n1/$n2))
Elif ]
then
Exit 0
else
Echo ”invalid input”
Fi
echo ”the result is $ result”
done
output:
suorita käsikirjoitus.
seuraava tuloste ilmestyy valintojen 2 ja 5 jälkeen.
Siirry alkuun
yhdistämällä vaikka silmukoita getoptsin kanssa
”getopts” on Bashin sisäänrakennettu funktio, jota käytetään bash-skriptin argumenttien ja vaihtoehtojen lukemiseen. Seuraavassa esimerkissä on käytetty getopts-toimintoa, jota käytetään while-silmukassa. Tässä, kolme vaihtoehtoa arvot käytetään getopts. Nämä ovat ”a”, ” r ” ja ”c”. Näitä vaihtoehtoja varten tulostetaan kolme erilaista viestiä.
# Lue valinta ja säilytä muuttuja
kun getopts ” arc ” – valinta; do
#Check the option value
case ${option} in
a) #option a
echo ”Process is aborted”
;;
r) # option r
echo ”Process is restarted”
;;
C) #option C
echo ”Process is continuing”
;;
\? ) #virheellinen valitsin
echo ” Use: or or ”
;;
esac
done
Output:
Suorita skripti kelvollisilla valinnoilla.
Suorita skripti virheellisellä valinnalla.
Siirry alkuun
käyttäen kunnes silmukka laskurin kanssa
kunnes silmukka voidaan käyttää laskurin kanssa kuten ennen näytetty silmukka. Seuraavassa esimerkissä esitetään until Loopin käyttö laskurilla. Tässä $counter-muuttujaa käytetään ohjaamaan silmukan iteraatiota, joka on alustettu arvoon 1. Until loop jatkuu, kunnes arvo $counter 5. Niin, silmukka iteroidaan 6 kertaa ja tulostaa arvo $laskuri jokaisessa vaiheessa. $laskuri on säätöä 1 kussakin vaiheessa päästä irtisanominen ehto silmukan.
# Initializ the counter
counter=10
# Iterate the loop for 6 times
until
do
echo ”the current value of counter = $counter”
((counter–))
done
Output:
Run the script.
Siirry alkuun
lopeta, kunnes silmukka käyttäjän syötön perusteella
mikä tahansa silmukka päättyy tietyn ehdon perusteella. Miten kunnes silmukka voidaan lopettaa käyttäjän syötteen perusteella, esitetään seuraavassa esimerkissä. Irtisanomisehdon mukaan silmukka päättyy, kun arvon $Numero on suurempi kuin 50. Arvon $numero ei kasva silmukan sisällä. Niin., silmukka jatkaa ottaa syötteen käyttäjältä, kunnes määrä yli 50 otetaan syötteeksi.
# alustaa numero
numero = 0
# Aseta numeeristen tietojen kaava
kuvio=’^+$’
# Aseta päättymisehto
kunnes
do
echo-n ”anna numero : ”
lukunumero
# Tarkista tuloarvo on numero tai ei
jos ! ]
then
echo ” error: Not a number ”
number=0
else
echo ”you have entered $number”
fi
done
Output:
Run the script.
skripti iteroi silmukan uudelleen tuloarvolle 4, näyttää virheilmoituksen tuloarvolle gg ja päättää silmukan tuloarvolle 54.
mene alkuun
käyttäen sisäkkäisiä silmukoita
kun silmukka julistetaan toisen silmukan sisään, sitä kutsutaan äärettömäksi silmukaksi. Seuraavassa esimerkissä esitetään sisäkkäisen silmukan käyttö. Tässä ensimmäinen while-silmukka iteroituu 2 kertaa ja toinen while-silmukka ensimmäisen silmukan sisällä iteroituu kolme kertaa. Silmukoiden iterointi on yhteensä 2×3=6 kertaa. $i-ja $j-muuttujia käytetään näiden silmukoiden iteroinnin ohjaamiseen ja näiden muuttujien arvot jokaisessa vaiheessa tulostetaan tulosteeksi.
# Initialize I and j
i=1
j=1
# Set termination condition for I
while
do
# Set termination condition for j
while
do
# Print the current value of i and j
printf ”i=%d, j=%d\n” $i $j
((j++))
tehty
j=1
((i++))
tehty
lähtö:
suorita skripti.
Siirry alkuun
käyttäen komentosarjassa
aloitettua taustatehtävää, kunnes silmukka sulkeutuu/odota, mikä tahansa prosessi voidaan ajaa taustalla käyttämällä symbolia ” &”. Tässä esimerkissä näytetään, miten prosessi voidaan suorittaa taustalla käyttäen silmukkaan asti ja lopettaa silmukka unikomennossa määritetyn ajan perusteella. Tässä $cnt-muuttujaa käytetään silmukan päättämiseen. Silmukka käynnistää taustaprosessin ja kirjoittaa tulosteen tekstitiedostoon nimeltä ”output.txt” 1 sekunti. Sen jälkeen, irtisanominen ehto silmukan tarkistaa ja se palaa vääriä. Seuraavaksi skripti tulostaa viestin ”Sleeping …” ja poistuu skriptistä 3 sekunnin kuluttua.
# Initialize counter
cnt=1
# Set termination condition
until
do
echo ”Background process is running”;
# Wait for 1 second
sleep 1;
((cnt++))
done > output.txt &
# Wait for 3 seconds
echo ” Sleeping…”
Uni 3
Lähtö:
Run the script.
Tarkista kirjoituksen tuloste.
Siirry alkuun
käyttämällä while loop-silmukkaa pid: n lukemiseen ps-tulosteelta, jota ei ole päätetty
” ps ” – komentoa käytetään saamaan tietoa kaikista järjestelmän käynnissä olevista prosesseista. Se tarjoaa yksityiskohtaista tietoa kaikista käynnissä olevista prosesseista, kuten käyttäjätunnuksesta, PID: stä, suorittimen käytöstä, muistin käytöstä jne. Seuraavassa esimerkissä näytetään, kuinka while-silmukan avulla voidaan lukea käynnissä olevaa prosessitietoa, joka liittyy ”Apacheen”. Tässä IFS-muuttujaa käytetään jokaisen prosessin PID-arvon tulostamiseen uudella rivillä. Seuraava, se odottaa, että käyttäjä painaa mitä tahansa näppäintä poistuakseen komentosarjasta.
# Set field separator
IFS= ””
while
do
# Retrieve all running process id of apache
pid= ”ps-ef | grep ”apache” | awk ”{print $2 ” process is running …”}”
echo $pid
# Wait for 1 second
sleep 1
# Press any key to terminate the loop
echo ”Press any key to terminate”
if read-r-n 1 ; then
break
fi
done
# Unset field separator
unset IFS
lähtö:
suorita skripti.
”Apacheen” perustuvan juoksuprosessin PID näkyy ulostulossa.
Siirry alkuun
etsii mitä tahansa merkkijonoa tiedostosta silmukan avulla ja poistu
Luo tiedosto nimeltä kuukausi.txt seuraavan sisällön testata bash script alla.
kuukausi.txt
February
March
April
May
June
July
August
September
October
November
December
’Vaikka’ loop käytetään seuraavassa esimerkissä lukea kuukausi.txt tiedosto rivi riviltä. Jos jokin rivi sisältää arvon, ’Kesäkuu’ niin se tulostaa ”nauti kesäloma” ja lopettaa käsikirjoituksen muuten se tulostaa arvon $line.
# asetti tiedostonimen lukemaan
filename=”month.txt”
# Read file line by line
while IFS= read-r line
do
# Check the value of line is equal to June
# Terminate the program if the condition is true
if ];
then
echo ”Enjoy Summer vacation”
exit 0
else
echo $line
fi
tehty < $tiedostonimi
lähtö:
suorita skripti.
tässä tiedostokuukaudessa on ”kesäkuu”.txt, joka päättää silmukan. Niin, muut kuukauden nimet jälkeen ’Kesäkuu’ ei lue silmukka.
Siirry alkuun
Yhdistä bash ja curl arvioidaksesi tietoja URL-osoitteesta
tietoja voidaan siirtää mille tahansa Bashin verkkopalvelimelle käyttämällä curl-komentoa millä tahansa tuetulla protokollalla, kuten HTTP, FTP, TELNET jne. Se on komentorivityökalu. Seuraavassa esimerkissä esitetään, miten ”curl” – komentoa voidaan käyttää URL-osoitteen tietojen arviointiin for loop-komennolla. Tässä for loop lukee luettelon url-osoitteista ja siirtää kunkin URL-arvon curl: ssä ja tulostaa URL-osoitteesta saadut tiedot.
# lue jokainen URL-osoite luettelosta
url-osoitteesta ”yahoo.com” ”youtube.com”
do
# Print HTTP response code for each URL
echo $url; curl-v-m 5-s $1 ”$url” | grep HTTP/1.1;
done
Output:
Run the script.
Siirry alkuun
tietojen lukeminen netcatin lähettämästä portista käyttäen loop
’netcat’ – komentoa käytetään datan lukemiseen ja kirjoittamiseen verkon yli tcp – tai udp-protokollan avulla. ”NC” – komentoa käytetään Bashissa ”netcat” – komennon suorittamiseen. Seuraavassa esimerkissä näytetään ” NC ” – komennon käyttö while Loopissa. Tässä skripti yrittää muodostaa yhteyden porttiin 1234 käyttäen nc-komentoa ja se tulostaa viestin toiseen päätteeseen, jos se voi muodostaa yhteyden. Sinun täytyy avata toinen pääteikkuna tai välilehti komentoa ”NC localhost 1234” varten yhteyden muodostamiseksi. Yhteyden muodostamisen jälkeen mikä tahansa viesti voidaan siirtää päätteestä toiseen.
echo ” kuuntelu portilla 1234 …”
# Lue netcatin välittämä viesti portissa 1234
kun taas lue teksti
do
# lopeta silmukka, jos vastaanotettu viesti on ”lopeta”
if ; sitten
echo ”Bye”
break
else
echo ”$text”
fi
# Print message when the port is connected
tehty < <((printf ”welcome.\r\nType some message : ”| / nc-l 1234)
tuloste:
Suorita skripti päätteessä ja aloita kuuntelu portista 1234.
avaa seuraavaksi toinen pääte ja suorita seuraava komento kommunikoidaksesi
ensimmäisen päätteen kanssa.
se näyttää tervetuliaisviestin toisessa terminaalissa. Jos käyttäjä kirjoittaa jotain toiseen terminaaliin, se näkyy ensimmäisessä terminaalissa. Kun käyttäjä kirjoittaa ’ lopeta ’toisessa terminaalissa sitten skripti päättyy näyttämällä viestin,’ Hei ’ ensimmäisessä terminaalissa.
Siirry alkuun
ping URL käyttäen loop
voit selvittää minkä tahansa verkkosivuston olevan elävä tai ei suorittamalla’ ping ’ – komennon sivuston URL-osoitteella. ”ping” – komentoa käytetään ”google.com” seuraavassa esimerkissä tarkistaa Internet-yhteys toimii tai ei. Vaikka silmukka iteroi 5 kertaa komentosarjassa ja yrittää ping google.com. Jos palvelin vastaa, se tulostaa ”Internet toimii” ja lopettaa silmukan. Jos silmukka iteroituu 5 kertaa eikä saa palvelimen vastausta, se tulostaa ”Ei internetyhteyttä”.
# Set the counter
count = 5
while]
do
# Try to ping google.com
ping-c 1 google.com
C=$?
# Check the status code
if ]
then
echo ”the Internet is working”
exit 0
fi
# Decrement the counter
((count–))
done
echo ”No Internet connection”
tuloste:
Suorita skripti.
saat samanlaisen ulostulon, jos Internet-yhteytesi toimii oikein.
Go to Top
Running top eräajotilassa käyttäen loop ja record output
’ top ’ command on Linux-hallintatyökalu, jota käytetään tutkimaan järjestelmän resurssien käyttöä, hallitsemaan erilaisia tehtäviä ja valvomaan käynnissä olevia prosesseja. Kuinka voit suorittaa ” top ” – komennon eräajotilassa silmukan avulla ja tallentaa tietueet tekstitiedostoon, näkyy seuraavassa esimerkissä. Tässä-B-vaihtoehtoa käytetään alkuun-komennon aloittamiseen eräajotilassa ja-p-vaihtoehtoa käytetään valvottavan prosessin tunnisteen asettamiseen. ”Top” – komennon ulostulo tallennetaan ulostuloon.txt-tiedosto.
# Silmukka iteroi 5 kertaa ja suorittaa ylimmän komennon
((i=0; i<5; i++))
do
top-B-p 2875-n1 / tail -1 >> lähtö.txt
done
Output:
suorita ensin seuraava komento löytääksesi luettelon käynnissä olevista prosesseista.
nyt, suorita skripti.
suorita seuraava komento nähdäksesi komentosarjan tulosteen.
mene alkuun
johtopäätös
silmukoita voidaan käyttää Bashissa eri tavoin erityyppisiin yksinkertaisiin tai monimutkaisiin tehtäviin. Kuinka kolmenlaisia silmukoita voidaan käyttää Bashissa eri tehtäviin, kuten luettelon tai taulukon hakemiseen, tiedostojen lukemiseen tai mihin tahansa komentotulokseen jne. on esitetty tässä artikkelissa käyttämällä hyvin yksinkertaisia esimerkkejä. Toivottavasti nämä esimerkit auttavat lukijaa ymmärtämään bash-silmukan käyttötarkoituksia selkeämmin.