Bash 'Until' Loop: Návod a příklady

Použití smyčky „until“ ve skriptu Bash k opakování příkazů.

Bash (Bourne Again Shell) je příkazový řádek a skriptovací jazyk shellu v operačních systémech GNU/Linux. Je to výchozí shell pro většinu distribucí Linuxu.

Stejně jako většina skriptovacích jazyků poskytuje Bash syntaxe smyček pro opakované opakování podobných úkolů. V tomto článku se naučíme, jak používat dokud smyčka v Bash.

Úvod

The dokud smyčka v Bash se používá k vykonání příkazu (příkazů) (prováděných příkazů) vícekrát na základě výstupu jiného příkazu (příkazů) (příkazy podmínek). Prováděné příkazy poběží, dokud příkaz podmínky nepřestane selhávat (tj. vrátí nenulový stav. Jakýkoli příkaz v Linuxu vrátí 0 pro úspěch a nenulové celé číslo pro selhání). Tohle je přesně naopak zatímco smyčka, ve které prováděné příkazy běží, dokud není příkaz podmínka úspěšný.

Pokud existuje více příkazů podmínek, příkaz bere v úvahu pouze stav posledního příkazu v seznamu, tj. smyčka poběží, dokud poslední příkaz v seznamu selže.

Obecná syntaxe

Obecná syntaxe pro dokud smyčka v Bash je:

dokud nebude hotovo

Seznam příkazů k provedení poběží, dokud selže poslední příkaz v seznamu příkazů podmínek. Jakmile je poslední příkaz úspěšný, smyčka se ukončí.

Uživatelé mohou v seznamech příkazů zadat libovolný spustitelný soubor. Mohou to být standardní linuxové programy nebo vlastní uživatelské programy či skripty. Každý příkaz by měl být buď na novém řádku, nebo oddělený středníkem na stejném řádku.

Podívejme se na několik příkladů.

Opakování, dokud proměnná nemá konkrétní hodnotu: Následující cyklus se provádí až do hodnoty proměnné X je 10.

x=0 do [[ $x -eq 10 ]] do echo $x ((x++)) hotovo

V každé iteraci kontrolujeme, zda je hodnota x 10. Hodnota je kontrolována pomocí test příkaz. [[Výraz]] je syntaxe příkazu test (viz mužský test).

Pak uvnitř udělat...hotovo bloku, jednoduše vytiskneme hodnotu x a zvýšíme ji. Smyčka se ukončí, jakmile je příkaz podmínky úspěšný, tj x $ je rovný 10.

Poznámka: Proměnná index, která se má použít ve smyčce „until“, se inicializuje buď před smyčkou „until“, nebo v příkazech podmínky, na rozdíl od smyčky for, která umožňuje inicializovat proměnnou implicitně.

S více příkazy podmínek: Následující smyčka vytvoří 5 pojmenovaných adresářů dir0, dir1, ... dir4.

z=0 do echo "Ahoj" echo "Ahoj" [[ $z -eq 5 ]] do echo "Vytváření dir$z..." mkdir dir$z ((z++)) hotovo

První příkazy echo „Hi“ a echo „Bye“ se provedou jednou úplně; jejich úspěch nebo neúspěch nemá žádný vliv na to, jak dlouho smyčka poběží.

Poté se provede testovací příkaz pro kontrolu hodnoty proměnné z. Dokud tento příkaz selže, tj. dokud hodnota z nebude 5, příkazy podmínky a provedené příkazy běží v pořadí. Zde pro každou iteraci nejprve spustí 2 příkazy echo v podmínce a poté příkaz 3. podmínky zkontroluje hodnotu z. Pokud není 5, vstoupí do smyčky a provede dané příkazy.

Přerušit a pokračovat

Break Statement for Conditional Exit

Můžeme také použít podmíněný příkaz -li uvnitř smyčky. The -li příkaz lze použít s a přestávka příkaz pro podmíněný výstup ze smyčky.

x=0, dokud [[ $x -eq 10 ]] neprovede, pokud [[ $x -eq 5 ]] break fi echo $x ((x++)) hotovo

Výše uvedená smyčka do vytiskne čísla od 0 do 4. Poté, když je hodnota i 5, smyčka se opustí. To je zvláště užitečné, když má být smyčka ukončena, když příkaz poskytuje specifický výstup.

Pokračovat ve výpisu a podmínečně přeskočit iteraci

Bash má také a pokračovat příkaz k přeskočení zbývající části iterace ve smyčce, pokud je splněna určitá podmínka.

x=0, dokud [[ $x -eq 10 ]] neprovede, pokud [[ $x -eq 5 ]] pokračovat fi echo $x ((x++)) hotovo

Výše uvedený cyklus vytiskne čísla od 0 do 10, kromě 5, protože během iterace x=5 existuje příkaz continue, který přeskočí zbytek kódu ve smyčce na začátku s iterací x=6.

Používání smyček: Skripty a příkazový řádek

Syntaxe smyček lze použít v prostředí Bash přímo nebo ze spustitelného souboru skriptu shellu. Podobný pro a zatímco smyčky, jednou an dokud Cyklus syntaxe je zadán do shellu, shell pokračuje ve výzvě, aby nechal uživatele pokračovat v zacyklení příkazů.

Nebo to může uživatel uložit do souboru skriptu a spustit soubor skriptu.

The #!/bin/bash na začátku určuje interpret, který se má použít při spuštění souboru. Ačkoli je Bash dnes nejběžněji používaným shellem, někteří uživatelé preferují shelly jako zsh, který by měl být specifikován místo bash na začátku tohoto souboru.

Udělit oprávnění ke spuštění pro tento soubor spusťte:

chmod +x test.sh

Konečně, spustit soubor, spustit:

./test.sh

Závěr

The dokud smyčka je další důležitou funkcí v Bash skriptování. Má zvláštní význam ve složitých skriptech, kdy se očekává, že určitá sada programů vrátí stav selhání a mají být provedeny některé další příkazy pro zaznamenání selhání, podrobné zobrazení chyby nebo jednoduše spuštění některých alternativních programů.