Jak psát Bash WHILE-Loops

Příkazy, syntaxe a příklady

Pořadí příkazů můžete provést jejich zápisem do souboru skriptu a následným spuštěním.

Skriptový soubor je prostě textový soubor, obvykle s příponou souboru .SH, který obsahuje řadu instrukcí, které lze také provést z příkazového řádku ( shellu ).

Zatímco příklady smyček

Níže je příklad cyklu while. Po spuštění bude tento soubor skriptu vytisknout čísla 1 až 9 na obrazovce. Příkaz-while vám dává větší flexibilitu při určování podmínek ukončení než u smyčky .

#! / bin / bash count = 1 zatímco [$ count -le 9] dělají echo "$ count" spánek 1 ((count ++)) hotovo

Například můžete předchozí skript vytvořit nekonečnou smyčku vynecháním příkazu přírůstku "((count ++))":

#! / bin / bash count = 1 zatímco [$ count -le 9] dělají echo "$ count" sleep 1 done

Prohlášení "spánek 1" pozastaví provádění po dobu 1 sekundy na každé iteraci. Pomocí klávesové zkratky Ctrl + C ukončíte proces.

Můžete také vytvořit nekonečnou smyčku vložením dvojtečka jako stav:

#! / bin / bash count = 1 zatímco: echo "$ count" spánku 1 ((count ++)) hotovo

Chcete-li v cyklu while-use použít více podmínek, musíte použít notaci s dvojitou hranatou hranatou hranou:

count = 1 done = 0, zatímco [[$ count -le 9] && [$ done == 0]] dělají echo "$ count" spánku 1 ((count ++)) pokud [$ count == 5]; pak $ done = 1 fi

V tomto skriptu je proměnná "done" inicializována na hodnotu 0 a pak nastavena na hodnotu 1, když počet dosáhne 5. Stav smyčky uvádí, že cyklus while bude pokračovat tak dlouho, dokud "count" je menší než nine a "done" je roven na nulu. Proto smyčky opouštějí, když se počet rovná 5.

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

Alternativní poznámka pro spojky "a" a "nebo" v podmínkách je "-a" a "-o" s jednoduchými hranatými závorkami. Výše uvedená podmínka:

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

... lze přepsat jako:

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

Čtení textového souboru se obvykle provádí se smyčkou. V následujícím příkladu skript bash přečte obsahový řádek podle řádku souboru s názvem "inventory.txt:"

FILE = inventory.txt exec 6

První řádek přiřadí název vstupního souboru proměnné "FILE". Druhý řádek uloží "standardní vstup" v deskriptoru souborů "6" (může to být libovolná hodnota mezi 3 a 9). To se provádí tak, že na konci skriptu je možné obnovit "standardní vstup" na deskriptor souboru "0" (viz příkaz "exec 0". Ve třetím řádku je vstupní soubor přiřazen deskriptoru souboru "0", který je použit pro standardní vstup. Příkaz "číst" pak čte řádek ze souboru na každé iteraci a přiřadí jej proměnné "line1".

Abyste předčasně opustili cyklu while, můžete použít příkaz break takto:

count = 1 done = 0 zatímco [$ count -le 9] dělají echo "$ count" spánek 1 ((count ++)) pokud [$ count == 5]

Příkaz přerušení přeskočí spuštění programu do konce při smyčce a provede všechny následující příkazy. V tomto případě příkaz "echo Finished."

Pokračování příkazu naopak přeskočí pouze zbytek příkazu while loop aktuální iterace a přeskočí přímo na další iteraci:

count = 1 done = 0 zatímco [$ count -le 9] dělá spánek 1 ((count ++)) pokud [$ count == 5] pokračuje ech echo "$ count" done echo

V tomto případě se příkaz "pokračovat" spustí, když proměnná "count" dosáhne 5. To znamená, že následující opakování (echo "$ count") se v této iteraci nevypíše (pokud je hodnota "count" 5).