30 Bash loop examples

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:

  1. käyttämällä silmukkaa luettelon kohteiden lukemiseen
  2. käyttäen silmukkaa joukon lukemiseen
  3. käyttäen silmukkaa merkkijonoluettelon lukemiseen välilyönneillä
  4. käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue
  5. käyttäen silmukkaa {START..LOPUSSA..Inkrementti} alue taaksepäin
  6. käyttäen silmukkaa, jossa on 3 osaa ja kuntolaskuria
  7. käyttäen silmukkaa, jossa on 3 osaa ja useita olosuhteita ja toimintoja pilkulla
  8. käyttäen ääretöntä silmukkaa
  9. käyttäen silmukkaa, jossa on ehdollinen katkos ja jatketaan
  10. käyttäen silmukkaa, jossa on ehdollinen katkos ja jatketaan
  11. käyttäen silmukkaa luettaessa tiedostonimiä globbaamalla
  12. käyttäen loop to read output from find Command
  13. using for loop to read filenames of a directory recursively
  14. using for loop to read filenames of a directory recursively with condition
  15. running the loop until the loop tiedosto on olemassa
  16. käyttäen pakettiluettelon komennon
  17. käyttäen for Loopia tiedoston jokaisen rivin lukemiseen
  18. käyttäen for Loopia tiedoston jokaisen rivin lukemiseen ehdollisen vastaavuuden perusteella
  19. käyttäen while loop with a counter
  20. käyttäen while loop with a user input and quit valittaessa poistumista valikosta
  21. yhdistetään vaikka silmukoita getopts

  22. käyttäen kunnes silmukka laskurilla
  23. lopeta kunnes silmukka perustuu käyttäjän syötteeseen
  24. käyttäen sisäkkäisiä kun silmukoita
  25. käyttäen kunnes silmukka nukkua/odottaa Taustatehtävää aloitettiin skriptissä
  26. käyttäen while loop-silmukkaa lukeaksesi pid-lukua ps-tulosteelta, jota ei ole päätetty
  27. hakien minkä tahansa merkkijonon tiedostosta käyttäen Loopia ja poistumista
  28. yhdistämällä bash ja curl verkko-osoitteen tietojen arviointiin
  29. lukemiseen portista, jonka netcat lähetti käyttäen Loopia
  30. Ping URL: n lukemiseen Loopilla
  31. käynnissä alkuun eräajotilassa käyttäen silmukkaa ja tietuetulosta

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ä.

#!/bin / bash
# 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.

$ bash for1.sh

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.

#!/bin/bash
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.

$ bash for2.sh

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ä.

#!/bin / bash
#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.

$ bash for3.sh

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ä.

#!/bin / bash
# 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.

$ bash for 4.Sh

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ä.

#!/bin / bash
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.

$ bash for5.sh

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.

#!/bin/bash
# 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.

$ bash for6.sh

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.

#!/bin / bash
# 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.

$ bash for7.sh

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”

#!/bin / bash
# 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.

$ bash for 8.sh

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.

#!/bin/bash
# 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.

$ bash for9.sh

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.

#!/bin / bash
# Loop etsii kaikki tekstitiedostot ja tallentaa jokaisen tiedostonimen $ – tiedostoon
tiedostolle ”*.txt”;
do
# Print the filename
echo $file;
done

Output:

Run the script.

$ bash for110.sh

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.

#!/bin / bash
# 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.

$ bash for 11.Sh

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.

#!/bin / bash
# 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.

$ bash for12.sh

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.

#!/bin / bash
# 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.

$ ls mydir

Suorita skripti.

$ bash for 13.Sh

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’.

#!/bin/bash
# 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.

$ bash loop14.sh

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.

# Aseta kentän erotin
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.

$ bash for15.sh

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.

#!/bin / bash
# 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.

$ bash for 16.sh

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.

# Lue tiedosto
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.

$ bash for17.sh

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.

#!/bin / bash
# alustaa laskuri
counter=1
# iteroi silmukka 5 kertaa
kun taas
do
kaiku ”Counter value = $counter”
((counter++))
tehty

Lähtö:

Suorita skripti.

$ bash loop18.sh

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.

#!/bin / bash
# 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.

$ bash loop19.sh

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ä.

#!/bin / bash
# 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.

$ bash loop20.sh -arc

Suorita skripti virheellisellä valinnalla.

$ bash loop20.sh-h

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.

#!/bin/bash
# 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.

$ bash loop21.sh

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.

#!/bin / bash
# 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.

$ bash loop22.sh

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.

#!/bin/bash
# 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.

$ bash loop23.sh

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.

#!/bin / bash
# 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.

$ bash loop24.sh

Tarkista kirjoituksen tuloste.

$ kissan ulostulo.txt

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.

#!/bin / bash
# 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.

$ bash loop25.Sh

”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

January
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.

#!/bin / bash
# 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.

$ bash loop26.sh

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.

#!/bin / bash
# 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.

$ bash loop27.sh

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.

#!/bin / bash
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.

$ bash loop28.sh

avaa seuraavaksi toinen pääte ja suorita seuraava komento kommunikoidaksesi

ensimmäisen päätteen kanssa.

$ NC localhost 1234

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ä”.

#!/bin / bash
# 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.

$ bash loop29.sh

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.

#!/bin | bash
# 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.

$ ps

nyt, suorita skripti.

$ bash loop30.sh

suorita seuraava komento nähdäksesi komentosarjan tulosteen.

$ kissan ulostulo.txt

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.

Vastaa

Sähköpostiosoitettasi ei julkaista.

More: