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.
Jos olet nauttinut tämän artikkelin, voit myös kuten..
|
|