Ako napísať Bash WHILE-Loops

Príkazy, syntax a príklady

Môžete vykonať sekvenciu príkazov ich zapísaním do súboru skriptu a následným spustením.

Súbor skriptu je jednoducho textový súbor, zvyčajne s príponou súboru .SH, ktorý obsahuje postupnosť inštrukcií, ktoré je možné vykonať aj z príkazového riadka ( shellu ).

Zatiaľ čo príklady slučiek

Nižšie je uvedený príklad cyklu while. Po spustení tento súbor skriptov vytlačí čísla 1 až 9 na obrazovke. Príkaz-while vám dáva väčšiu flexibilitu pri určovaní podmienky ukončenia ako v prípade cyklu "for-loop" .

#! / bin / count count = 1 zatiaľ čo [$ count -le 9] urobí echo "$ count" spánok 1 ((count ++)) done

Napríklad môžete skorší skript vytvoriť nekonečnú slučku vynechaním príkazu prírastku "((count ++))":

#! / bin / count count = 1 zatiaľ čo [$ count -le 9] urobí echo "$ count" spánok 1 urobil

Vyhlásenie "spánok 1" pozastaví výkon na 1 sekundu pri každej iterácii. Pomocou klávesovej skratky Ctrl + C ukončíte proces.

Môžete tiež vytvoriť nekonečnú slučku tak, že položíte dvojbodku ako podmienku:

#! / bin / count count = 1 zatiaľ čo: echo "$ count" spánok 1 ((count ++)) hotovo

Aby ste mohli používať viaceré podmienky v bežnej slučke, musíte použiť notáciu s dvojitým štvorcovým závorníkom:

count = 1 done = 0, zatiaľ čo [[$ count -le 9] && [$ done == 0]] urobí echo "$ count" spánok 1 ((count ++)) if [$ count == 5]; potom $ done = 1 fi done

V tomto skripte sa premenná "done" inicializuje na hodnotu 0 a potom sa nastaví na hodnotu 1, keď počet dosiahne 5. Štýl slučky udáva, že cyklica while bude pokračovať tak dlho, kým "count" je menej ako deväť a "done" je rovné na nulu. Preto sa slučky ukončia, keď sa počet rovná 5.

"&&" znamená logické "a" a "||" znamená logické "alebo".

Alternatívna poznámka pre spojky "a" a "alebo" v podmienkach je "-a" a "-o" s jednoduchými hranatými zátvorkami. Vyššie uvedená podmienka:

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

... možno prepísať ako:

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

Čítanie textového súboru sa zvyčajne vykonáva s okamihovým okamihom. V nasledujúcom príklade skript bash číta obsahový riadok súboru s názvom "inventory.txt:"

FILE = inventory.txt exec 6

Prvý riadok priradí názov vstupného súboru premennej "FILE". Druhý riadok ukladá "štandardný vstup" do deskriptora súboru "6" (môže to byť ľubovoľná hodnota medzi 3 a 9). To sa deje tak, že "štandardný vstup" môže byť na konci skriptu obnovený na deskriptor súborov "0" (pozri príkaz "exec 0" V treťom riadku je vstupný súbor priradený deskriptoru súboru "0", ktorý sa používa pre štandardný vstup.Výkaz "čítať" potom číta riadok zo súboru na každej iterácii a priradí ju premennej "riadok1".

Aby sme mohli predčasne opustiť funkciu while-loop, môžete použiť výraz break takto:

count = 1 done = 0, zatiaľ čo [$ count -le 9] urobí echo "$ count" spánok 1 ((count ++)) ak [$ count == 5]

Príkaz prerušenia preskočí spúšťanie programu do konca, zatiaľ čo slučka vykoná akékoľvek vyhlásenia, ktoré nasledujú. V tomto prípade vyhlásenie "echo Finished".

Pokračujúci príkaz na druhej strane preskočí iba zvyšok výkazu slučky momentu aktuálnej iterácie a preskočí priamo na ďalšiu iteráciu:

count = 1 done = 0 zatiaľ čo [$ count -le 9] urobí spánok 1 ((count ++)) ak [$ count == 5] pokračuje vo ech echo "$ count" done echo

V tomto prípade sa príkaz "pokračovať" vykoná, keď premenná "count" dosiahne hodnotu 5. To znamená, že v tejto iterácii nie je vykonané nasledujúce vyhlásenie (echo "$ count") (ak je hodnota "count" 5).