Shell Scripting Tutorial for Beginners 19 - FOR loop
Sisällysluettelo:
- Vakiohinta silmukalle
- Silmukka jousien yli
- Silmukka lukualueella
- Silmukoi taulukkoelementit
- C-tyylinen Bash silmukalle
- Katkaise ja jatka lausuntoja
- Break lausunto
- Jatka lausuntoa
- Bash Loop-esimerkkejä
- Tiedostojen nimeäminen välilyönneillä tiedostonimessä
- Tiedostotunnisteen muuttaminen
- johtopäätös
Silmukat ovat yksi ohjelmointikielten peruskäsitteistä. Silmukat ovat käteviä, kun haluat suorittaa komentojen sarjan uudestaan ja uudestaan, kunnes tietty ehto saavutetaan.
Skriptikielissä, kuten Bash, silmukat ovat hyödyllisiä toistuvien tehtävien automatisoinnissa.
Bash-komentosarjoissa on kolme perussilmukkakonstruktiota silmukalle, silmukalle ja silmukkaan asti.
Tässä opetusohjelmassa käsittelemme silmukoiden perusteita Bashissa. Osoitamme sinulle myös, miten tauon ja jatkotoimenpiteiden avulla voidaan muuttaa silmukan virtausta.
Vakiohinta silmukalle
For-silmukka iteroi luettelon kohteista ja suorittaa annetut komennot.
Bash for -silmukka on seuraavassa muodossa:
for item in do done
Lista voi olla sarja merkkijonoja, jotka on erotettu välilyönneillä, numeroalue, komennon tulos, taulukko ja niin edelleen.
Silmukka jousien yli
Alla olevassa esimerkissä silmukka iteroi jokaisen merkkijonojen luettelon kohteen yli ja muuttuva
element
asetetaan nykyiseen kohtaan.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
Silmukka tuottaa seuraavan tuloksen:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Silmukka lukualueella
Voit käyttää sekvenssilauseketta määrittämään luku- tai merkkialue määrittelemällä alueen alku- ja loppupiste. Sekvenssiekspressio on seuraavassa muodossa:
{START..END}
Alla olevassa esimerkissä silmukka toistuu kaikkien lukujen välillä 0 - 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
Alkaen Bash 4: stä, on myös mahdollista määrittää lisäys käytettäessä alueita. Lauseke on seuraavassa muodossa:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Silmukoi taulukkoelementit
Voit myös käyttää for-silmukkaa iteroidakseen joukon elementtejä:
Seuraavassa esimerkissä määrittelemme taulukon
BOOKS
ja iteroimme taulukon jokaisen elementin yli.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
C-tyylinen Bash silmukalle
C-tyylin syntaksi silmukalle on seuraavassa muodossa:
for ((INITIALIZATION; TEST; STEP)) do done
INITIALIZATION
-osa suoritetaan vain kerran, kun silmukka alkaa. Sitten
TEST
osa arvioidaan. Jos se on väärä, for-silmukka lopetetaan. Jos
TEST
on totta, for-silmukan rungon sisällä olevat komennot suoritetaan ja
STEP
osa päivitetään.
Seuraavassa koodissa silmukka tähtyy alustamalla
i = 0
, sitten ennen jokaista iteraatiota tarkistetaan, onko
i ≤ 10
. Jos totta, se tulostaa
i
ja
i
: n nykyarvon yhdellä (
i++
), muuten silmukka loppuu.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
Silmukka toistuu 1001 kertaa ja tuottaa seuraavan tuloksen:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Katkaise ja jatka lausuntoja
Tauko- ja jatkelausekkeita voidaan käyttää ohjaamaan silmukan suoritusta.
Break lausunto
Taukolausunto lopettaa nykyisen silmukan ja siirtää ohjelmanhallinnan lauseeseen, joka seuraa lopetettua käskyä. Sitä käytetään yleensä silmukan lopettamiseen, kun tietty ehto täyttyy.
Seuraavassa esimerkissä käytämme if-käskyä silmukan suorittamisen lopettamiseen, kun nykyinen iteroitu kohde on yhtä suuri kuin 'litium'.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Jatka lausuntoa
Jatka-käsky poistuu silmukan nykyisestä iteraatiosta ja siirtää ohjelman ohjauksen silmukan seuraavaan iteraatioon.
Seuraavassa esimerkissä iteroimme lukualueella ja kun nykyinen iteroitu kohde on yhtä suuri kuin '2', jatka lause antaa suorituksen palata silmukan alkuun ja jatkaa seuraavan iteraation kanssa.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Bash Loop-esimerkkejä
Tiedostojen nimeäminen välilyönneillä tiedostonimessä
Seuraava esimerkki osoittaa, kuinka Bash for -silmukan avulla nimetään kaikki nykyisen hakemiston tiedostot välilyönniksi nimissä korvaamalla välilyönti alleviivaukseksi.
for file in *\ *; do mv "$file" "${file// /_}" done
Jaotellaan koodirivi riviltä:
- Ensimmäinen rivi luo for-silmukan ja toistaa luettelon kaikista tiedostoista, joiden nimessä on välilyönti. Lauseke
*\ *
luo luettelon. Toinen rivi koskee kaikkia luettelon kohteita ja siirtää tiedoston uuteen korvaamalla tilan alaviivalla (_
). Osa${file// /_}
käyttää kuoriparametrin laajennusta korvaamaan parametrissa olevan kuvion merkkijonolla.done
osoittaa silmukasegmentin lopun.
Tiedostotunnisteen muuttaminen
Seuraava esimerkki osoittaa, kuinka Bash for -silmukkaa käytetään kaikkien nykyisessä hakemistossa.jpeg-tiedostojen päättyvien tiedostojen nimeämiseen korvaamalla tiedostopääte.jpeg-tiedostosta.jpg-tiedostoon.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Analysoidaan koodirivi riviltä:
- Ensimmäinen rivi luo for-silmukan ja toistaa luettelon kaikista tiedostoista, jotka päättyvät '.jpeg'. Toinen rivi koskee kaikkia luettelon kohteita ja siirtää tiedoston uuteen, joka korvaa '.jpeg' ilmaisulla '.jpg'..
${file%.jpeg}
poistaa '.jpeg' osan tiedostonimestä käyttämällä suoritettua shell-parametrien laajennusta osoittaen silmukasegmentin lopun.
johtopäätös
Tähän mennessä sinulla pitäisi olla hyvä ymmärrys siitä, miten bash for loop -sovellusta voidaan iteroida luetteloiden läpi.
bash loop -pääteBash-taulukot
Taulukot ovat yksi käytetyimmistä ja perusteellisimmista tietorakenteista. Tässä artikkelissa kerrotaan Bash-taulukot ja selitetään, kuinka niitä käytetään Bash-skripteissäsi.
Bash: liitä tiedostoon
Linuxissa on useita tapoja liittää teksti tiedostoon. Tämä artikkeli selittää joitain niistä.
Kuinka tarkistaa, onko tiedostoa tai hakemistoa olemassa bash-tiedostossa
Usein Shell-komentosarjoja kirjoitettaessa voi joutua tilanteeseen, jossa joudut suorittamaan toimenpiteen sen perusteella, onko tiedosto olemassa vai ei. Bash-sovelluksessa voit käyttää testikomentoa tarkistaaksesi, onko tiedostoa olemassa ja määrittää tiedostotyyppi.