Hvernig á að skrifa BASH "fyrir" Loop

Hvernig á að nota BASH "fyrir" lykkju í skeljaskripta

BASH (sem stendur fyrir Bourne Again Shell) er forskriftarþarfir sem notaðar eru af flestum Linux og UNIX-stýrikerfum.

Þú getur keyrt BASH skipanir innan flugstöðvar glugga einn eftir annan eða þú getur bætt við skipunum í textaskrá til að framleiða skeljaskripta.

The mikill hlutur óður í að skrifa skel skrifta er að þú getur keyrt þá aftur og aftur. Til dæmis ímyndaðu þér að þú þarft að bæta notanda við kerfi, setja heimildir sínar og stjórna upphaflegu umhverfi sínu. Þú getur annaðhvort skrifað niður skipanirnar á blað og keyrt þeim eins og þú bætir við nýjum notendum eða þú getur skrifað eitt handrit og sleppið bara breytur inn í handritið.

Scripting tungumál eins og BASH hafa svipaða forritun byggingar og önnur tungumál. Til dæmis getur þú notað innflutningsbreytur til að fá inntak frá lyklaborðinu og geyma þær sem breytur. Þú getur þá fengið handritið til að framkvæma ákveðna aðgerð með hliðsjón af gildi inntaksbreytinga .

Lykill hluti af hvaða forritun og forskriftarþarfir er hæfni til að keyra sama kóðann aftur og aftur.

Það eru nokkrar leiðir til að endurtaka kóða (einnig þekkt sem lykkjur). Í þessari handbók verður sýnt hvernig á að skrifa "fyrir" lykkju.

A til lykkja endurtekur ákveðna hluta kóðans aftur og aftur. Þeir eru gagnlegar þannig að röð skipanir geta haldið áfram að birtast þar til tiltekið ástand er uppfyllt, eftir það munu þeir hætta.

Í þessari handbók verður sýnt fimm leiðir til að nota lykkjuna í BASH handriti.

Áður en þú byrjar

Áður en þú byrjar með dæmi um lykkjuna þarftu að opna flugstöðvar glugga og fylgja þessum skrefum:

  1. Sláðu inn mkdir forskriftir ( læra meira um mkdir hér )
  2. Sláðu inn geisladiska (þetta breytir möppunni við forskriftir )
  3. Sláðu inn nano examplen.sh (þar sem n er dæmið sem þú ert að vinna að)
  4. Sláðu inn handritið
  5. Ýttu á CTRL + O til að vista og CTRL + X til að hætta
  6. Hlaupa bash examplen.sh (aftur, þar sem n er dæmið sem þú ert að vinna með)

Hvernig á að ganga í gegnum lista

#! / bin / bash
fyrir númer í 1 2 3 4 5
gera
echo $ númer
gert
hætta 0

BASH leiðin til að nota "fyrir" lykkjur er nokkuð frábrugðin því sem flest önnur forritun og forskriftarþrep eiga við um "fyrir" lykkjur. Skulum brjóta handritið niður ...

Í BASH "fyrir" lykkju allt, eru yfirlýsingar milli gera og gert gerðar einu sinni fyrir hvert atriði í listanum.

Í ofangreindum dæmi er listinn allt sem kemur eftir orðinu í (þ.e. 1 2 3 4 5).

Í hvert skipti sem lykkjan endurtekur er næsta gildi í listanum sett inn í breytu sem er skilgreindur eftir orðinu "fyrir" . Í ofangreindum lykkju er breytu kallað númer .

Echo yfirlýsingin er notuð til að birta upplýsingar á skjánum.

Þess vegna tekur þetta dæmi tölurnar 1 til 5 og framleiðir þær einn í einu á skjáinn:

Hvernig á að hlaupa milli byrjun og endapunkts

Vandamálið við dæmið hér að ofan er að ef þú vilt vinna stærri lista (segja 1 til 500), myndi það taka tíma að slá öll númerin í fyrsta lagi.

Þetta leiðir okkur í annað dæmi sem sýnir hvernig á að tilgreina upphafs- og endapunkt:

#! / bin / bash
fyrir númer í {1..10}
gera
echo "$ númer"
gert
hætta 0

Reglurnar eru í grundvallaratriðum það sama. Gildin eftir orðið " í" gera listann að endurtekningu og hvert gildi í listanum er settur í breytu (þ.e. númer) og í hvert skipti sem lykkjan endurtekur eru yfirlýsingarnar gerðar milli aðgerða og gerða.

Helstu munurinn er hvernig listinn er myndaður. The curly sviga {} táknar í grundvallaratriðum svið og sviðið er í þessu tilviki 1 til 10 (tveir punktarnir skilja frá upphafi og lok sviðsins).

Þetta dæmi rennur því í gegnum hvert númer á milli 1 og 10 og framleiðir númerið á skjáinn þannig:

Sama lykkja gæti hafa verið skrifuð svona, með setningafræði eins og fyrsta dæmiið:

fyrir númer í 1 2 3 4 5 6 7 8 9 10

Hvernig á að sleppa tölum í svið

Fyrrverandi dæmi sýndi hvernig á að hlaupa milli byrjun og endapunkta, svo nú munum við líta á hvernig á að sleppa tölum á bilinu.

Ímyndaðu þér að þú viljir lykkja á milli 0 og 100 en aðeins sýna hvert tíunda númer. Eftirfarandi handrit sýnir hvernig á að gera þetta:

#! / bin / bash
fyrir númer í {0..100..10}
gera
echo "$ númer"
gert
hætta 0

Reglurnar eru í grundvallaratriðum það sama. Það er listi, breytur og sett af yfirlýsingum sem gerðar eru á milli gera og gert . Listinn í þetta sinn lítur svona út: {0..100..10}.

Fyrsta númerið er 0 og endanúmerið er 100. Þriðja númerið (10) er fjöldi atriða á listanum sem hún mun sleppa.

Ofangreind dæmi sýnir því eftirfarandi framleiðsla:

A More Traditional Útlit fyrir Loop

BASH leiðin til að skrifa fyrir lykkjur er svolítið undarlegt í samanburði við önnur forritunarmál.

Þú getur hins vegar skrifað fyrir lykkju í svipuðum stíl við C forritunarmálið, eins og þetta:

#! / bin / bash
fyrir ((númer = 1; tala <100; númer ++))
{
ef (($ tala% 5 == 0))
Þá
echo "$ númer er deilt með 5"
fi
}
hætta 0

Lykkjan byrjar með því að stilla breytu númerið í 1 (númer = 1 ). Lykkjan mun halda áfram að endurtaka meðan verðmæti númer er minna en 100 ( fjöldi <100 ). Gildi númeranna breytist með því að bæta 1 við það eftir hverja endurtekningu ( númer ++ ).

Allt á milli hrokkið armbönd er framkvæmt með hverri endurtekningu lykkjunnar.

Stakið á milli handfangsins mælir með fjölda , skiptir það með 5 og samanstendur afgangnum við 0. Ef restin er 0 þá er númerið deilt með 5 og birtist þá á skjánum.

Til dæmis:

Ef þú vilt breyta stígstærð endurtekningarinnar geturðu breytt númerinu + + til að vera númer = númer + 2 , númer = númer + 5 eða númer = númer + 10 o.fl.

Þetta er hægt að lækka frekar í númerið + = 2 eða númer + = 5 .

Hagnýtt dæmi

Fyrir lykkjur getur gert meira en endurtekið lista yfir númer. Þú getur raunverulega notað framleiðsla annarra skipana sem listann.

Eftirfarandi dæmi sýnir hvernig á að umbreyta hljóðskrám frá MP3 til WAV :

#! / bin / bash

Listinn í þessu dæmi er hver skrá með .MP3 eftirnafninu í núverandi möppu og breytu er skrá .

The mpg stjórn breytir MP3 skrá í WAV. Hins vegar þarftu sennilega að setja þetta upp með því að nota pakka framkvæmdastjóra þinn fyrst.