Hoe't Bash Bash WHILE-Loops skriuwt

Kommando's, Syntaks, en Examples

Jo kinne in sesje fan kommando's útfiere troch se yn in skripttriem te skriuwen en dêrnei út te fieren.

In skripttriem is gewoan in teksttriem, meastal mei de .SH-triem útwreiding, dy befettet in sesje fan ynstruksjes dy't ek útfierd wurde fan de kommandorigine ( shell ).

Hoewol Loop Examples

Hjirûnder is in foarbyld fan in skoftke loop. As jo ​​útfiere, sil dizze skriptriem de nûmers 1 oant 9 op it skerm drukke. De tydlike deklaraasje jout jo mear fleksibiliteit foar it oanjaan fan de termynstelling as de foar-loop .

#! / bin / bash count = 1 wylst [$ count -le 9] do echo "$ count" sliepe 1 ((count ++)) dien

Bygelyks kinne jo it foarige skript in unfinigens loop meitsje troch it ynstekken fan 'e ynstekking "((count ++))" te ferlitten:

#! / bin / bash count = 1 wylst [$ count -le 9] do echo "$ count" sliept 1 dien

De "sliepe 1" -Antjefte stoppet de útfiering foar 1 sekonde op elk hiereraasje. Brûk de fluchtoets fan Ctrl + C om it proses te ferbrekken.

Jo kinne ek in unfinityf loop meitsje troch in kolon as de kondysje te setten:

#! / bin / bash count = 1 wylst: echo "$ count" sliepe 1 ((count ++)) dien

Om meardere betingsten te brûken yn 'e tydlike loop, moatte jo de dûbele fjouwerkante kloknot brûke:

count = 1 done = 0 wylst [[$ count -le 9] && [$ done == 0]] echo "$ count" sliepe 1 ((count ++)) as [$ count == 5]; dan $ done = 1 fûn dien

Yn dit skript wurdt de fariabele "dien" ynsteld op 0 en dêrnei op 1 as it getal pleatst 5. De loopbedoart stelt dat de toskleur ferdwynt as lang "count" minder dan njoggen is en "dien" is lyk oan oant nul. Dêrom ferwize de loops as de teller liket 5.

De "&&" betsjut logikaal "en" en "||" betsjut logikaal "of".

In alternatyf notysje foar de konjunksjes "en" en "of" yn betingsten is "-a" en "-o" mei ienige fjouwerkantklassen. De boppesteande betingst:

[[$ count -le 9] && [$ done == 0]]

... koe wurde oanmeld as:

[$ count -le 9] -a [$ done == 0]

It lêzen fan in teksttriem wurdt typysk dien mei in skoftke loop. Yn it folgjende foarbyld lêst it bash-skript de ynhâldynline troch rigel fan in bestân mei de namme "inventory.txt:"

FILE = inventory.txt exec 6

De earste line jout de yndieldriemnamme de "FILE" -Variable. De twadde line rint de "standertynfier" yn de triem descriptor "6" (it kin elke wearde tusken 3 en 9 wêze). Dit is dien dat "standertynfier" opnij set wurde kin op triemdeskriptor "0" oan 'e ein fan it skript (sjoch de útspraak "útfiere 0" yn de 3e rigel is it ynfiertriem oanpast ta triemdeskriptor "0", dy't brûkt wurd foar standertynfier De lêzen fan in lêzen lêze dan in rigel fan 'e bestân op elke ytearing en jout it oan' e line1 'variable.

Om foardieljen foardat jo in skoft liede, kinne jo de break statement lykas dit brûke:

count = 1 done = 0 wylst [$ count -le 9] do echo "$ count" sliepe 1 ((count ++)) as [$ count == 5] dan brekt fi done echo Finished

De break statement besjog de útfiering fan programma oan 'e ein, wylst se loop loek en útfiert elk útstallings nei dizze. Yn dit gefal is de ferklearring "echo Ferteld."

De trochgeande deklaraasje fan 'e oare kant skriuwt allinich de rest fan' e jildende loop-statement fan 'e aktuele iteraasje en springt direkt nei de folgjende iteraasje:

count = 1 done = 0 wylst [$ count -le 9] sliepe 1 ((count ++)) as [$ count == 5] dan fjirder fjirde echo "$ count" dien echo Ferteld

Yn dit gefal wurdt de deklaraasje "trochgean" útfiert as de fariant "count" rint 5. Dit betsjut dat de folgjende deklaraasje (echo "$ count") net útfierd wurdt op dizze iteraasje (as de wearde fan "count" is 5).