Android

Bash silmukasta

Shell Scripting Tutorial for Beginners 19 - FOR loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Sisällysluettelo:

Anonim

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