Kuidas kirjutada BASH "for" Loop

Kuidas kasutada BASH "for" shelli skriptidena

BASH (mis tähistab Bourne Again Shell) on skriptikeem, mida kasutavad enamik Linuxi ja UNIX-i operatsioonisüsteeme.

Võite käivitada BASH-i käske terminaliaknas üksteise järel või kopeerida skripti loomiseks tekstifaili käske.

Kogu skriptide kirjutamise hea asi on see, et saate neid uuesti ja uuesti käivitada. Näiteks kujutlege, et peate süsteemile kasutaja lisama, määrama oma õigused ja juhtima oma lähtekeskkonda. Võite kirjutada paberitükile käske ja käivitada need, kui lisate uusi kasutajaid või võite kirjutada ühe skripti ja lihtsalt edastada parameetrid sellesse skripti.

Scripting languages ​​nagu BASH on sarnased programmeerimise konstruktsioonid nagu teised keeled. Näiteks saate impordi parameetreid sisestada klaviatuurilt ja salvestada need muutujatena. Seejärel saate skripti teatud toimingu tegemiseks sisendparameetrite väärtuse põhjal .

Mis tahes programmeerimis- ja skriptikeeli võtmeosa on võime käivitada sama tükk kood uuesti ja uuesti.

Koodi kordamist (tuntud ka kui silmuseid) on mitmeid viise. Selles juhendis näete teile, kuidas kirjutada "jaoks" silmuse jaoks.

A loop kordab teatud osa koodi üle ja uuesti. Need on kasulikud, nii et käskude seeria võib töötada kuni teatud tingimuse täitmiseni, pärast mida nad lõpetavad.

Selles juhendis kuvatakse BASH-skripti jaoks viis loendit kasutades viis võimalust.

Enne alustamist

Enne alustades loop näidetega peate avama terminali akna ja järgima neid samme:

  1. Sisestage mkdir-skriptid ( lisateavet mkdir-i kohta leiate siit )
  2. Sisesta cd skripte (see muudab skriptide kataloogi )
  3. Sisestage nano examplen.sh (kus n on näide, millega sa töötad)
  4. Sisestage skript
  5. Vajutage CTRL + O, et salvestada ja CTRL + X väljumiseks
  6. Käivita bash examplen.sh (uuesti, kui n on näide, millega te töötate)

Kuidas loendist läbi loendi

#! / bin / bash
numbrile 1 2 3 4 5
tee seda
echo $ number
lõpetatud
väljuda 0

BASH-i viis "silmuste" kasutamiseks on mõnevõrra erinev sellest, kuidas enamik teisi programmeerimis- ja skriptikeeme käidavad siltide jaoks. Katkesta skript alla ...

BASH "for" jaoks loop kõik, avaldused tehakse ja tehakse üks kord iga loendi kohta.

Eespool toodud näites on nimekiri kõik, mis pärast sõna on (st 1 2 3 4 5).

Iga kord, kui loop kordub, lisab nimekirja järgmine väärtus muutujasse, mis on määratud pärast sõna "jaoks" . Ülalolevas loos on muutuja nimega number .

Echo avaldust kasutatakse ekraanile kuvatava teabe kuvamiseks.

Seetõttu võtab see näide numbrid 1 kuni 5 ja väljastab need ekraanile ükshaaval:

Kuidas loopida algus- ja lõpppunkti vahel

Probleem ülaltoodud näitega on see, et kui soovite suuremat nimekirja (st 1 kuni 500) töödelda, siis võtab see vanuse järgi kõik numbrid esimesena.

See toob meid teisele näidisele, mis näitab, kuidas alg- ja lõpp-punkti määrata:

#! / bin / bash
numbriks {1..10}
tee seda
echo "$ number"
lõpetatud
väljuda 0

Reeglid on põhimõtteliselt samad. Väärtused pärast sõna " sisse" moodustavad loendi, et seda läbi viia, ja loendis asuvad kõik väärtused asetatakse muutujale (st number) ja iga kord, kui loop kordub, tehakse toimingute ja lõpetatud avalduste vahel.

Peamine erinevus on loendi moodustamise viis. Lukukujulised sulgud {} tähistab põhimõtteliselt vahemikku ja antud vahemik on vahemikus 1 kuni 10 (kaks punkti asuvad vahemiku alguses ja lõpus).

See näide lööb läbi iga numbri vahemikus 1 kuni 10 ja väljastab numbri ekraanile järgmiselt:

Sama loop oleks võinud kirjutada selleni nagu süntaks, mis on identne esimese näitega:

numbrile 1 2 3 4 5 6 7 8 9 10

Kuidas numbrite vahele jätta

Eelmine näide näitas, kuidas loopida algus- ja lõpp-punkti vahele, nii et nüüd vaatame, kuidas vahemikus vahele jätta numbreid.

Kujutage ette, et soovite loopida vahemikus 0 kuni 100, kuid näita ainult iga kümnendat numbrit. Järgmine skript näitab, kuidas just seda teha:

#! / bin / bash
numbriks {0..100..10}
tee seda
echo "$ number"
lõpetatud
väljuda 0

Reeglid on põhimõtteliselt samad. Seal on nimekiri, muutuja ja avalduste komplekt, mida teha ja lõpetada. Nüüd kuvatakse see välja järgmine: {0..100..10}.

Esimene number on 0 ja lõppnumber on 100. Kolmas number (10) on loendis olevate üksuste arv, mille ta vahele jätta.

Eespool toodud näide näitab seega järgmist väljundit:

Rohkem traditsioonilisi loopi otsin

Liinide BASH-i kirjutamise viis on võrreldes teiste programmeerimiskeeltega pisut kummaline.

Kuid võite kirjutada C-tüüpi programmeerimiskeele sarnase stiili puhul silmuse, näiteks:

#! / bin / bash
jaoks ((number = 1; number <100; number ++))
{
kui (($ number% 5 == 0))
siis
echo "$ number jagub 5-ga"
fi
}
väljuda 0

Loop algab, seadistage muutuja number 1 (number = 1 ). Loop hoiab korduvat, samas kui numbri väärtus on väiksem kui 100 ( number <100 ). Numbri muutuste väärtus, lisades sellele 1 pärast iga kordamist ( number ++ ).

Kõik keevisliidete vahele jääb läbi iga loopi iteratsiooni.

Nurkade vahekaugus kontrollib arvu väärtust, jagab selle 5-ga ja võrdleb ülejäänud väärtusega 0. Kui ülejäänud osa on 0, siis on see arv jagatav 5-ga ja kuvatakse seejärel ekraanil.

Näiteks:

Kui soovite muuta iteratsiooni astme suurust, võite muuta arvu ++ sektsiooni number = number + 2 , number = number + 5 või number = number + 10 jne.

Seda saab veelgi vähendada numbrini + = 2 või numbriga + = 5 .

Praktiline näide

Silmuste puhul saab teha rohkem kui lihtsalt järjestada numbrite loendeid. Võite kasutada nimekirja teiste käskude väljundit.

Järgmine näide näitab, kuidas teisendada audiofaile MP3- lt WAV-ile :

#! / bin / bash

Selles näites on loendis kõik failid, millel on praeguses kaustas .MP3 laiendus, ja muutuja on fail .

Mpg käsk teisendab MP3-faili WAV-i. Kuid tõenäoliselt peate installima selle kõigepealt paketihalduri abil.