Miten kirjoittaa BASH "varten" Loop

Kuinka käyttää BASH "for" silmukkaa komentosarjoissa

BASH (joka tarkoittaa Bourne Again Shell) on skriptauskieli, jota useimmat Linux- ja UNIX-pohjaiset käyttöjärjestelmät käyttävät.

Voit käyttää BASH-komentoja pääteikkunan ikkunassa peräkkäin tai lisätä komentoja tekstitiedostoon komentorivin luomiseksi.

Suuri käsitys komentosarjoista on, että voit käyttää niitä uudelleen ja uudelleen. Oletetaan esimerkiksi, että sinun on lisättävä käyttäjä järjestelmään, asetettava käyttöoikeudet ja hallittava niiden aloitusympäristö. Voit joko kirjoittaa komentoja paperiin ja käyttää niitä lisäämällä uusia käyttäjiä tai voit kirjoittaa yhden käsikirjoituksen ja siirtää parametrit kyseiseen komentosarjaan.

BASH: n skriptikielillä on samanlaiset ohjelmointikehitykset kuin muilla kielillä. Voit esimerkiksi tuoda parametreja syöttämään syötteen näppäimistöstä ja tallentaa ne muuttujiksi. Tämän jälkeen skriptin voi suorittaa tietyn toimenpiteen, joka perustuu syötettyjen parametrien arvoon .

Minkä tahansa ohjelmoinnin ja komentosarjakielen keskeinen osa on kyky käyttää samaa koodia uudelleen ja uudelleen.

Useita tapoja toistaa koodia (kutsutaan myös silmukoiksi). Tässä oppaassa näytetään, kuinka voit kirjoittaa "for" -silmukan.

A for loop toistaa tietyn osan koodista uudestaan ​​ja uudestaan. Ne ovat hyödyllisiä niin, että sarja komentoja voi jatkua, kunnes tietyt edellytykset täyttyvät, minkä jälkeen ne pysähtyvät.

Tässä oppaassa näytetään viisi tapaa käyttää silmukan silmukkaa BASH-komentosarjan sisällä.

Ennen käyttöönottoa

Ennen kuin aloitat silmukan esimerkkien käyttöön, sinun on avattava päätelaite ja noudata seuraavia ohjeita:

  1. Anna mkdir-skriptejä ( lisätietoja mkdiristä tästä )
  2. Anna cd-komentosarjat (tämä muuttaa hakemiston komentosarjoihin )
  3. Anna nano examplen.sh (missä n on esimerkki, jota olet tekemässä)
  4. Kirjoita käsikirjoitus
  5. Paina CTRL + O tallentaaksesi ja CTRL + X poistuaksesi
  6. Suorita bash examplen.sh (uudelleen, kun n on esimerkki, jossa työskentelet)

Kuinka kierrä luettelossa

#! / Bin / bash
numeroon 1 2 3 4 5
tehdä
echo $ numero
tehty
poistu 0

BASH-tapa käyttää "for" -silmukoita on hieman erilainen kuin useimmat muut ohjelmointi- ja skriptikielet käsittelevät "silmukoita". Let's break käsikirjoitus alas ...

Kaikissa BASH "for" -silmukoissa kaikki ja toisten väliset lausunnot suoritetaan kerran luettelon jokaiselle kohteelle.

Yllä olevassa esimerkissä luettelo on kaikki, joka tulee sanan (eli 1 2 3 4 5) jälkeen.

Joka kerta, kun silmukka iteroidaan, seuraava luetteloarvo lisätään sanaan "for" jälkeen määritetty muuttuja. Edellä olevassa silmukassa muuttujaa kutsutaan numeroksi .

Kaiun ilmaisua käytetään näyttöön tuleviin tietoihin näytölle.

Siksi tämä esimerkki ottaa numerot 1-5 ja antaa ne yksitellen näytölle:

Miten lukita alkamis- ja loppupisteitä

Edellä mainitun esimerkin ongelma on se, että jos haluat käsitellä isomman luettelon (sanoa 1-500), kaikkien aikojen ikäryhmät kirjoittaisivat kaikki numerot.

Tämä tuo meidät toiseen esimerkkiin, joka osoittaa, miten määritetään aloitus- ja loppupiste:

#! / Bin / bash
numeroon {1..10}
tehdä
echo "$ number"
tehty
poistu 0

Säännöt ovat periaatteessa samoja. Sanaa " sisään" merkityt arvot muodostavat listan toistuvaksi ja jokainen arvo listassa asetetaan muuttujaan (eli numeroon) ja joka kerta, kun silmukka iteroidaan, suoritetaan tehtävien ja tekemien lausumien välillä.

Tärkein ero on tapa, jolla luettelo muodostuu. Curly-kiinnikkeet {} pohjimmiltaan merkitsevät alueita, ja alue on tässä tapauksessa 1 - 10 (kaksi pistettä erottavat alueen alku- ja loppupisteet).

Tästä syystä tämä esimerkki kulkee jokaisen numeron välillä 1 - 10 ja antaa numeron näytölle seuraavasti:

Samaa silmukkaa olisi voitu kirjoittaa tällä tavoin, samanlaisen syntaksin kanssa kuin ensimmäinen esimerkki:

numeroon 1 2 3 4 5 6 7 8 9 10

Kuinka ohittaa numerot alueelta

Edellisessä esimerkissä kävi ilmi alkupääte- ja loppupisteen välinen silmukka, joten nyt tarkastelemme, kuinka ohittaa numerot valikoimasta.

Kuvittele, että haluat silmukan välillä 0-100, mutta näytät vain joka kymmenes numero. Seuraava käsikirjoitus näyttää, miten tehdä juuri tämä:

#! / Bin / bash
numeroon {0..100..10}
tehdä
echo "$ number"
tehty
poistu 0

Säännöt ovat periaatteessa samoja. On olemassa luettelo, muuttuja ja joukko lausumia, jotka suoritetaan välillä tehty ja tehty . Tämä lista näyttää tällä kertaa: {0..100..10}.

Ensimmäinen numero on 0 ja lopetettu numero on 100. Kolmas numero (10) on luettelossa olevien kohteiden määrä, jolle se ohittaa.

Edellä oleva esimerkki näyttää siis seuraavan lähdön:

Lisää perinteinen etsivät silmukkaa

BASH-kirjoituskieli silmukoille on hieman kummallista verrattuna muihin ohjelmointikieliin.

Voit kuitenkin kirjoittaa silmukalle samanlaisen tyylin kuin C-ohjelmointikieli, kuten:

#! / Bin / bash
((numero = 1, numero <100, numero ++))
{
jos (($ numero% 5 == 0))
sitten
echo "$ numero on jaollinen 5: llä"
fi
}
poistu 0

Silmukka alkaa asettamalla muuttujan numeroksi 1 (numero = 1 ). Silmukka pitää iteraatiota, kun arvon numero on alle 100 ( määrä <100 ). Numeron arvo muutetaan lisäämällä siihen 1 jokaisen iteroinnin jälkeen ( numero ++ ).

Kaikki kiharaiset ripustimet suoritetaan jokaisen silmukan iteroinnin kautta.

Pituuksien välinen bitti tarkistaa numeron arvon, jakaa sen 5: llä ja vertailee loppuosan arvoon 0. Jos loppuosa on 0, numero on jaollinen 5: llä ja näytetään sitten näytöllä.

Esimerkiksi:

Jos haluat muuttaa iteroinnin askelluskokoa, voit muuttaa numero-numeroa + numero = numero + 2 , numero = numero + 5 tai numero = numero + 10 jne.

Tätä voidaan edelleen vähentää numeroon + = 2 tai numeroon + 5 .

Käytännön esimerkki

Silmukat voivat tehdä enemmän kuin toerata numeroita. Voit todella käyttää muiden komentojen tuottoa luettelona.

Seuraavassa esimerkissä kuvataan, miten äänitiedostoja MP3: stä voidaan muuntaa WAV :

#! / Bin / bash

Tässä esimerkissä oleva luettelo on jokainen tiedosto, jolla on nykyisen kansion .MP3-laajennus ja muuttuja on tiedosto .

Mpg- komento muuntaa MP3-tiedoston WAViksi. Sinun on kuitenkin todennäköisesti asennettava tämä ensin paketinhallinnan avulla.