Hoe om 'n BASH te skryf "vir" Loop

Hoe om die BASH "for" lus in dop skrifte te gebruik

BASH (wat staan ​​vir Bourne Again Shell) is 'n skripsie taal wat gebruik word deur die meeste Linux en UNIX-gebaseerde bedryfstelsels.

U kan BASH-opdragte binne 'n terminaal venster uitvoer, of u kan die opdragte by 'n tekslêer voeg om 'n dopsoort te produseer.

Die groot ding om skripskripte te skryf, is dat jy hulle weer en weer kan hardloop. Verbeel jou byvoorbeeld dat jy 'n gebruiker by 'n stelsel moet byvoeg, hul permissies moet stel en hulle begin omgewing moet bestuur. Jy kan óf die opdragte op 'n stukkie papier neerskryf en hardloop soos jy nuwe gebruikers byvoeg of jy kan 'n enkele skrif skryf en pas parameters in die skrif.

Scripting tale soos BASH het soortgelyke programmeringskonstruksies as ander tale. Byvoorbeeld, jy kan invoer parameters gebruik om insette van die sleutelbord te kry en dit as veranderlikes te stoor. U kan dan die script kry om 'n sekere aksie uit te voer gebaseer op die waarde van die insetparameters .

'N belangrike deel van enige programmering en script taal is die vermoë om dieselfde stuk kode weer en weer uit te voer.

Daar is 'n aantal maniere om kode te herhaal (ook bekend as lusse). In hierdie gids sal jy gewys word hoe om 'n "vir" lus te skryf.

A vir lus herhaal 'n sekere gedeelte van die kode oor en oor. Hulle is nuttig sodat 'n reeks opdragte kan voortduur totdat 'n spesifieke voorwaarde nagekom is, waarna hulle sal stop.

In hierdie gids word vyf maniere gewys om die voorlus binne 'n BASH-skrip te gebruik.

Voordat jy begin

Voordat u met die voorbeelde vir lus begin, moet u 'n terminale venster oopmaak en die volgende stappe volg:

  1. Voer mkdir-skrifte in ( leer meer oor mkdir hier )
  2. Voer CD-skrifte in (dit verander die gids na skrifte )
  3. Tik nano examplen.sh (waar n die voorbeeld is waarop jy werk)
  4. Tik die skrif in
  5. Druk Ctrl + O om te stoor en CTRL + X om te verlaat
  6. Begin bash examplen.sh (weer, met n die voorbeeld waarmee jy werk)

Hoe om deur 'n lys te loop

#! / Bin / bash
vir nommer in 1 2 3 4 5
doen
echo $ nommer
gedaan
afrit 0

Die BASH manier om "vir" loops te gebruik, is ietwat anders as die meeste ander programmerings- en skripstale vir "loops". Kom ons breek die skrif af ...

In 'n BASH "vir" lus alles, word die stellings tussen gedoen en gedoen een keer vir elke item in die lys uitgevoer.

In die bostaande voorbeeld is die lys alles wat na die woord in (dws 1 2 3 4 5) kom.

Elke keer as die lus herhaal word, word die volgende waarde in die lys ingesit in die veranderlike wat na die woord "vir" gespesifiseer word. In die bogenoemde lus word die veranderlike nommer genoem.

Die echo verklaring word gebruik om inligting op die skerm te vertoon.

Dus, hierdie voorbeeld neem die nommers 1 tot en met 5 en gee hulle een vir een na die skerm uit:

Hoe om te loop tussen 'n begin en eindpunt

Die probleem met bogenoemde voorbeeld is dat as jy 'n groter lys wil verwerk (sê 1 tot 500), sal dit ouderdomme neem om al die getalle in die eerste plek te tik.

Dit bring ons by die tweede voorbeeld wat wys hoe om 'n begin en eindpunt te spesifiseer:

#! / Bin / bash
vir nommer in {1..10}
doen
eggo "$ nommer"
gedaan
afrit 0

Die reëls is basies dieselfde. Die waardes na die woord " in" maak die lys uit om dit te herhaal en elke waarde in die lys word in die veranderlike geplaas (dws nommer) en elke keer as die lus herhaal word, word die stellings tussen gedoen en gedoen .

Die belangrikste verskil is die manier waarop die lys gevorm word. Die krullerige hakies () dui basies 'n reeks aan, en die reeks, in hierdie geval, is 1 tot 10 (die twee punte onderskei die begin en einde van 'n reeks).

Hierdie voorbeeld loop dus deur elke getal tussen 1 en 10 en gee die volgende nommer na die skerm uit:

Dieselfde lus kan soos volg geskryf word, met sintaks identies aan die eerste voorbeeld:

vir nommer in 1 2 3 4 5 6 7 8 9 10

Hoe om nommers in 'n reeks te slaan

Die vorige voorbeeld het gewys hoe om tussen 'n begin en eindpunt te loop, so nou kyk ons ​​hoe om nommers in die reeks te slaan.

Stel jou voor dat jy tussen 0 en 100 wil loop, maar wys slegs elke tiende nommer. Die volgende skrip wys hoe om dit net te doen:

#! / Bin / bash
vir getal in {0..100..10}
doen
eggo "$ nommer"
gedaan
afrit 0

Die reëls is basies dieselfde. Daar is 'n lys, 'n veranderlike, en 'n stel stellings wat tussen doe en klaar gedoen moet word . Die lys lyk hierdie keer soos volg: {0..100..10}.

Die eerste nommer is 0 en die eindnommer is 100. Die derde nommer (10) is die aantal items in die lys wat dit sal slaan.

Die bostaande voorbeeld vertoon dus die volgende uitset:

'N Meer Tradisionele Op soek na Loop

Die BASH manier om te skryf vir lusse is effens vreemd in vergelyking met ander programmeringstale.

Jy kan egter 'n lus in 'n soortgelyke styl skryf aan die C-programmeertaal, soos volg:

#! / Bin / bash
vir ((getal = 1; getal <100; getal ++))
{
indien (($ getal% 5 == 0))
dan
echo "$ nommer is deelbaar met 5"
fi
}
afrit 0

Die lus begin deur die veranderlike nommer op 1 te stel (nommer = 1 ). Die lus sal herhaal terwyl die waarde van 'n getal minder as 100 is ( getal <100 ). Die waarde van die getal verander deur 1 na elke herhaling toe te voeg ( nommer + + ).

Alles tussen die krulhakies word uitgevoer deur elke herhaling van die lus.

Die bietjie tussen die hakies toets die waarde van 'n getal , verdeel dit met 5 en vergelyk die res na 0. As die res 0 is, is die nommer deelbaar met 5 en word dit dan op die skerm vertoon.

Byvoorbeeld:

As jy die stapgrootte van die iterasie wil verander, kan jy die nommer + + afdeling verander as nommer = nommer + 2 , nommer = nommer + 5 of nommer = nommer + 10 ens.

Dit kan verder verminder word na getal + = 2 of nommer + = 5 .

'N Praktiese voorbeeld

Vir lusse kan meer as iterate lyste van getalle doen. U kan eintlik die uitvoer van ander opdragte as die lys gebruik.

Die volgende voorbeeld toon hoe om klanklêers van MP3 na WAV om te skakel:

#! / Bin / bash

Die lys in hierdie voorbeeld is elke lêer met die .MP3 uitbreiding in die huidige gids en die veranderlike is 'n lêer .

Die mpg- opdrag omskep die MP3-lêer in WAV. U moet dit egter eers met u pakketbestuurder installeer.