Wéi schreiwen Bash WHILE-Loops

Commands, Syntax, an Beispiller

Dir kënnt eng Sequenz vun Kommandoen ausschreiwen andeems se se an e Skriptdatei schreiwen an dann opgefouert ginn.

E Script-Fichier ass einfach eng Textdatei, normalerweis mat der .H-Dateiounerweiterung, déi eng Rei vun Instruktiounen enthält, déi och aus der Command Line ( Shell ) ausgeführt ginn.

Während Loop Examples

Hei drënner ass e Beispill vu enger Zäitchen. Wann dir agedeelt hutt gëtt dës Skriptdatei d'Nummeren 1 bis 9 op der Säit gedréckt. D'Erwaardung weist Iech méi Flexibilitéit fir d'Terminatiounskonditioun ze spezifizéieren wéi d' For-Loop .

#! / bin / bash count = 1 wann [$ count -le 9] ech ech "count count" sleep 1 ((count ++)) gemaach

Zum Beispill kënnt Dir de fréieren Skript enfinéiert Loop maachen andeems Dir d'Inkrementnusserung "((count ++)" ausgelauschtert ":

#! / bin / bash count = 1 wann [$ count -le 9] ech ech "count count" schlofen 1 gemaach

D'Erklärung "Schlof 1" setzt d'Ausféierung während 1 Sekonn op all Iteratioun. Benutze de Ctrl + C Tastenkürzel fir de Prozess ze korrigéieren.

Dir kënnt och eng onendlech Loop erstellen, andeems Dir e Colon als Konditioun setzen:

#! / bin / bash count = 1 wann: ech "$ count" schlofen 1 ((count ++)) gemaach

Fir verschidden Zustands an der Zäitschleife ze benotzen, musst Dir d'Duebeleck Klammern Notation benotzen:

Grousse = 1 maachen = 0 wann [[$ count -le 9] && [$ done == 0]] ech ech "count count" schlofen 1 ((count ++)) wann [$ count == 5]; da gitt $ $ = 1 fi gemaach

An dësem Skript gëtt déi Variabel "gemaach" initialiséiert a 0 a gëtt dann op 1 festgeluecht wann d'Zuel erreechst 5. D'Loopzéier huet festgehalen datt déi laangfristeg Loop weider geet wéi "zielt" manner wéi néng ass a "gemaach" ass gläich op Null. Dofir sinn d'Loopen of wéi d'Zuel ass 5.

De "&&" heescht logesch "an" an "||" bedeit "logesch" oder ".

Eng alternativ Notioun fir d'Konjunktiounen "an" an "oder" ënner Bedingungen "- a" a "-o" mat enger eckeg Klammer. Dës Fro:

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

... kéint geschriwwe ginn wéi:

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

Liesen eng Textdatei gëtt normalerweis mat enger laang Schleife gemaach. Am folgendem Beispill liest de Bash-Skript d'Inhaltszeechens per Zeil vun enger Datei déi "inventory.txt" genannt gëtt.

FILE = inventory.txt exec 6

Déi éischt Zeil ass den Input-Dateinumm zu der "FILE" -Variable. Déi zweet Linn späichert de "Standardeingangs" an der Dateiverzennung "6" (et kann e Wäert tëscht 3 an 9) sinn. Dat gëtt gemaach, sou datt "Standardeingang" fir den Date des Deskriptor "0" am Ende vum Skript nees restauréiert ginn (kuckt d'Erklärung "exec 0 An der 3. Linn ass d'Input- Datei vum Dateiverzessor" 0 "ass zougelooss ginn fir den Standardeingriff D'Liest "Ausso" liest dann eng Zeil aus der Datei op all Iteratioun an ass mat der Variabel "line1" zu Lëtzebuerg.

Fir e friemst Erliewensstécker ze behalen, kënnt Dir d'Break-Aussoen maachen:

Zuelen = 1 maachen = 0 wann [$ count -le 9] ech ech "count count" schlofen 1 ((count ++)) wann [$ count == 5]

D'Break-Anweisung versprécht d'Ausféierung vum Programm bis zum Enn an huet d'Loop gemaach a se ausdrécklech Aussoe virbestëmmen. An dësem Fall erkläert d'Ausso "Echo Ofgeschloss."

Déi weider Erklärung, op där anerer Säit, sprutt just den Rescht vun der Zäit während der Schleife vun der aktueller Iteratioun an spréngt direkt op d'nächst Iteratioun:

Zielt = 1 fäeg = 0, wann [$ count -le 9] schlofen 1 ((count ++)) wann [$ count == 5] dann weider fi echo "$ count" gemaach Echo Ofgeschloss

An dësem Fall gëtt d'Erklärung "weider" ausgezeechent datt déi variabel "Zählung" 5 erreechst. Dëst bedeit datt déi nächst Erklärung (Echo "$ count") net bei dëser Iteratioun ausgeführt gëtt (wann de Wäert vu "count" ass 5).