12 Bash-Silmukka Esimerkkejä Linux-Shell Scripting

12 Bash-Silmukka Esimerkkejä Linux-Shell Scripting

On olemassa kahdenlaisia bash silmukoita käytettävissä. Toinen käyttää” in ” – avainsanaa, jossa on luettelo arvoista, toinen käyttää C-ohjelmointia kuten syntaksia.

Tämä artikkeli on osa käynnissä bash opetusohjelma sarja.

Tämä selittää molemmat bash silmukka menetelmiä, ja tarjoaa 12 erilaista esimerkkiä siitä, miten käyttää bash silmukka teidän shell-skriptit.
kirjanmerkki tämä artikkeli tulevaisuuden viittaus, koska tämä on ainoa artikkeli sinun koskaan tarvitse viitata miten käyttää bash silmukoita esimerkkejä.,

Menetelmä 1: Bash Silmukka käyttäen ”in” ja luettelo-arvot

Syntax:

for varname in listdo command1 command2 ..done

edellä syntaksi:

  • sillä, tehdä ja tehdä, ovat avainsanat
  • ”list” sisältää luettelon arvot. Luettelo voi olla muuttuja, joka sisältää useita välilyöntien erottamia sanoja. Jos luettelo puuttuu for statement, niin se ottaa positionaalinen parametri, joka on siirretty kuori.
  • varname on mikä tahansa Bash-muuttujan nimi.

tässä muodossa, sillä selvitys suorittaa komentoja suljettu kehon, kunhan kunkin kohteen luetteloon., Esimerkiksi, jos arvojen luettelo, joka sisältää 5 kohdetta, silmukka suoritetaan yhteensä 5 kertaa, kerran jokaisen kohteen luettelosta. Nykyinen kohde luettelosta tallennetaan muuttujaan ”varname” joka kerta silmukan läpi. Tämä ”varname” voidaan käsitellä for Loopin kehossa.

Menetelmä 2: Bash Silmukka käyttäen C syntaksi

toinen muoto silmukka on samanlainen silmukka ”C” ohjelmointikielellä, joka on kolme ilmauksia (alustus, kunto ja updation).,

for (( expr1; expr2; expr3 ))do command1 command2 ..done

edellä bash for-komennon syntaksi,

  • Ennen ensimmäistä iterointia, expr1 on arvioitu. Tätä käytetään yleensä alustaa muuttujia silmukka.
  • kaikki do: n ja Donen väliset lausumat suoritetaan toistuvasti, kunnes expr2: n arvo on totta.
  • jokaisen silmukan iteraation jälkeen arvioidaan expr3. Tätä käytetään yleensä silmukkalaskurin kasvattamiseen.

seuraavat 12 esimerkkiä osoittavat, miten silmukoita voi lyödä eri tavoin.,

Staattiset arvot luettelon jälkeen ”in” avainsanan

seuraavassa esimerkissä listan arvot (Ma, Ti, Ke, To ja Pe) ovat suoraan annettu sen jälkeen, kun avainsana ”in” bash silmukka.

Varoitus: arvoluetteloa ei pidä erottaa pilkulla (Ma, Ti, Ke, To, Pe). Pilkku käsitellään osana arvoa. eli sen sijaan, että ”Mon”, se käyttää” Mon”, kuten arvo Alla olevassa esimerkissä.

varovaisuus: arvoluetteloa ei pidä liittää kahteen sitaattiin. Ma Ti Ke To Pe)., Jos liittää kaksinkertainen lainaus, sitä käsitellään kuin yhden arvon (eikä 5 eri arvot), kuten esimerkissä alla.

$ cat for1-wrong2.shi=1for day in "Mon Tue Wed Thu Fri"do echo "Weekday $((i++)) : $day"done$ ./for1-wrong2.shWeekday 1 : Mon Tue Wed Thu Fri

Muuttuja luettelon jälkeen ”in” avainsanan

sen Sijaan antaa arvot suoraan for-silmukka, voit tallentaa arvot muuttuja, ja käyttää muuttujan for-silmukan jälkeen ”in” avainsanan, kuten seuraavassa esimerkissä.

Varoitus: parhaana käytäntönä kannattaa aina siteerata bash-muuttujia sitä viitatessa. Tästä parhaisiin käytäntöihin liittyvästä säännöstä on vain vähän poikkeuksia. Tämä on yksi heistä., Jos siteeraat muuttujaa tässä kaksinkertaisesti silmukan osalta, arvoluetteloa käsitellään yhtenä arvona. Monet lankeavat tähän ansaan. Ole varovainen ja älä tuplaa lainata muuttujan for silmukka.

Älä määritä luettelo; saada sen sijoitteluun parametrit

Jos et määritä avainsanan ”in”, jota seuraa mitä tahansa luettelon arvot bash silmukka, se käyttää sijoitteluun parametrit (en.e argumentteja, jotka välitetään shell script).

Varoitus: ole varovainen, jos käytät tätä menetelmää. Et saa sisällyttää avainsanaa ”in” for loopiin., Jos jätät avainsanan ” in ” ilman mitään arvoja, se ei käytä sijaintiparametria kuten alla. Se ei mene silmukan sisään. I. E For loop ei koskaan tule toteutetuksi alla olevassa esimerkissä esitetyllä tavalla.

$ cat for3-wrong.shi=1for day indo echo "Weekday $((i++)) : $day"done$ ./for3-wrong.sh Mon Tue Wed Thu Fri

Huom: Katso meidän aikaisempi artikkeli ymmärtää enemmän bash asentohuimaus parametrit.

Unix-komento tulostaa listan arvojen jälkeen ”in” avainsanan

Voit käyttää lähtö tahansa UNIX / Linux-komento lista arvot silmukka liittämällä komento takaisin-punkkeja”, kuten alla on esitetty.,

Silmukan läpi tiedostojen ja hakemistojen silmukka

silmukka läpi tiedostojen ja hakemistojen alle tietyn hakemiston, vain cd tuohon hakemistoon, ja antaa * for-silmukan, kuten on esitetty alla.

seuraavassa esimerkissä käydään läpi kaikki kotihakemiston alla olevat tiedostot ja hakemistot.

*: n käyttö bash for Loopissa on samanlaista tiedostopalloa, jota käytämme linux-komentorivillä käytettäessä ls-komentoa (ja muita komentoja).

esimerkiksi seuraavat näyttävät kaikki kotihakemiston alla olevat tiedostot ja hakemistot., Tämä on käsite, jota käytetään edellä for5.sh esimerkki.

cd ~ls *

seuraavassa näytetään kaikki *.conf-tiedosto, joka alkaa joko A -, b-tai C-tai d-hakemistosta /etc-hakemistosta.

$ ls -1 /etc/*.conf/etc/asound.conf/etc/autofs_ldap_auth.conf/etc/cas.conf/etc/cgconfig.conf/etc/cgrules.conf/etc/dracut.conf

sama argumentti, jota käytetään ls-komennon yläpuolelle, voidaan käyttää bash for-silmukan, kuten on esitetty esimerkissä.

Tauko ulos silmukan

Voit murtautua ulos silmukan käyttämällä ’rikkoa’ komento kuten alla.,

$ cat for6.shi=1for day in Mon Tue Wed Thu Frido echo "Weekday $((i++)) : $day" if ; then break; fidone$ ./for6.shWeekday 1 : MonWeekday 2 : Tue

Edelleen ylhäältä silmukan

tietyissä olosuhteissa, voit jättää loput komennot silmukka, ja jatketaan silmukan alusta (seuraava arvo-luettelo), käyttäen continue-komennolla kuten alla.

seuraavassa esimerkissä lisätään ”(WEEKEND)” satiin ja aurinkoon ja ”(weekday)” loppupäiviin.

Bash silmukka käyttäen C-ohjelman syntaksia

Tässä esimerkissä käytetään 2. menetelmä bash silmukka, joka on samanlainen kuin C-silmukan syntaksi., Seuraava esimerkki tuottaa 5 satunnaislukua käyttäen bash C-tyylistä Loopia.

9. Ääretön Bash silmukka

Kun sinulla ei ole tarjota alusta, kunnossa, ja kasvu bash-C-tyyli silmukka, se tulee ääretön silmukka. Sinun täytyy painaa Ctrl-C pysäyttää silmukka.

$ cat for9.shi=1;for (( ; ; ))do sleep $i echo "Number: $((i++))"done

Kuten sanoimme edellä, paina Ctrl-C murtautua ulos tästä bash ääretön silmukka esimerkki.,

$ ./for9.shNumber: 1Number: 2Number: 3

Käyttämällä pilkku bash-C-tyyli silmukka

bash c-tyyli silmukka, lukuun ottamatta lisäys arvo, jota on käytetty kunto, voit myös lisäys jokin muu arvo, kuten alla.

Vuonna alusta jakso, ja lisäys osassa bash-C-tyyli silmukka, sinulla voi olla useita arvo erottamalla pilkulla kuten alla.

seuraavat silmukka on suoritettu yhteensä 5 kertaa, käyttäen muuttujan i. Kuitenkin muuttujan j aloittaa 5, ja saada lisäys 5 joka kerta, kun silmukka saa teloitettiin.,

$ cat for10.shfor ((i=1, j=10; i <= 5 ; i++, j=j+5))do echo "Number $i: $j"done$ ./for10.shNumber 1: 10Number 2: 15Number 3: 20Number 4: 25Number 5: 30

eri numerot jälkeen ”in” avainsanan

Voit silmukan läpi käyttämällä erilaisia numeroita varten silmukka ”in” käyttäen ahdin laajentamiseen.

seuraavat esimerkkilenkit läpi 10 kertaa käyttäen arvoja 1-10.

$ cat for11.shfor num in {1..10}do echo "Number: $num"done$ ./for11.shNumber: 1Number: 2Number: 3Number: 4Number: 5...

useita numeroita välein sen jälkeen, kun ”itse” avainsanan

seuraava esimerkki silmukoita läpi 5 kertaa käyttää arvoja 1 kautta 10, jossa lisäys 2. se alkaa 1: llä ja kasvaa 2: lla, kunnes se saavuttaa 10: n.,

$ cat for12.shfor num in {1..10..2}do echo "Number: $num"done$ ./for12.shNumber: 1Number: 3Number: 5Number: 7Number: 9

PS: Älä unohda kirjanmerkki tämä artikkeli myöhempää tarvetta varten.

> Lisää kommentti

Jos olet nauttinut tämän artikkelin, voit myös kuten..

  1. 50 Linux Sysadmin Tutorials
  2. 50 Yleisimmin Käytetty Linux-Komentoja (Esimerkkejä)
  3. Top 25 Parasta Linux-Suorituskyvyn Seuranta ja Testaus Työkaluja
  4. Äiti, minä löysin sen!,l>
  • Awk Introduction – 7 Awk Print Examples
  • Advanced Sed Substitution Examples
  • 8 Essential Vim Editor Navigation Fundamentals
  • 25 Most Frequently Used Linux IPTables Rules Examples
  • Turbocharge PuTTY with 12 Powerful Add-Ons


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *