Použití příkazu if…else v Bash pro podmíněné spuštění kódu.
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.
Podmíněné příkazy jsou životně důležité v jakémkoli programovacím jazyce, kompilovaném i skriptovaném. Umožňují uživateli spustit část kódu na základě předem definované podmínky, která je jedním ze základů programovací logiky. V tomto článku se naučíme, jak používat kdyby...jinak
podmíněný příkaz v Bash.
Úvod
The kdyby...jinak
příkaz v Bash umožňuje uživateli manipulovat s tokem kódu na základě podmínek. Uživatel může specifikovat samostatné bloky kódu, které se mají provést, z nichž pouze jeden bude nakonec proveden za běhu na základě odpovídající podmínky, která je splněna.
Všimněte si, že lze zadat více než dvě podmínky, pro které elif
lze použít výpis. Uživatel může zadat libovolný počet podmínek pomocí elif
a nakonec výchozí podmínka pomocí jiný
blok. Podívejme se na to více v syntaxi a příkladech níže.
Obecná syntaxe
Obecná syntaxe pro kdyby...jinak
prohlášení v Bash je:
pokud pak jiný fi
Zde, pokud vyhovuje, tj. pokud vrátí 0 (úspěch), provede se blok 1 kódu. Pokud podmínka nevrátí 0, tj. vrátí chybový stav, pak se provede blok kódu 2. The
kdyby...jinak
blok končí a fi
tvrzení.
Pro více bloků odpovídajících více podmínkám,elif
se používá:
pokud pak elif tedy elif tedy ... ... jinak fi
Zde se podmínky zkontrolují v pořadí a provede se blok kódu první podmínky, který vrátí stav 0 (úspěch). Např. -li Pokud žádná z podmínek nevrátí stav 0, Všimněte si, že Pro provedení bloku kódu pokud má proměnná konkrétní hodnotu: Chcete-li zkontrolovat více hodnot: Podmínky mohou být libovolné příkazy Linuxu. Odpovídající blok kódu se spustí, pokud příkaz proběhne úspěšně. Ve výše uvedeném příkladu od Můžeme zahnízdit i další To je užitečné, když má být po splnění počáteční podmínky zkontrolována samostatná sada podmínek. Například následující kód se pokouší nainstalovat software webového serveru: Kód nejprve zkontroluje, zda je Nginx již nainstalován v systému. Pokud ano, zobrazí pouze zprávu a ukončí se. Pokud tomu tak není, pokusí se nainstalovat Nginx. Pokud z nějakého důvodu nelze Nginx nainstalovat do systému z balíčku, pokusí se nainstalovat Apache2. Pokud i Apache2 při instalaci zobrazí chybu, ukončí se a zobrazí zprávu, že nelze nainstalovat žádný software. Podobným způsobem lze použít vnořený blok uvnitř Podobně jako jakýkoli Bash kód, Uživatel může také uložit tento kód do souboru skriptu a spustit soubor skriptu. The Chcete-li tomuto souboru udělit oprávnění ke spuštění, spusťte: Nakonec pro spuštění souboru spusťte: Podobně jako jakýkoli programovací jazyk, vrátí nenulový stav (selhání), pak
je zaškrtnuto. Li
vrací stav 0,
je proveden. Poté se další podmínky nekontrolují a provádění kódu pokračuje do kódu za
fi
tvrzení. v bloku else se provede. Všimněte si, že blok else je volitelný. Pokud není splněna žádná podmínka, tak i ne
jiný
Pokud je zadán blok, nespustí se žádný podmíněný blok kódu a provádění kódu bude pokračovat do kódu za fi
prohlášení, jak je znázorněno na vývojovém diagramu níže.pak
příkaz se má použít až po -li
a elif
prohlášení a nejsou vyžadovány po jiný
tvrzení.Příklady
x=0 pokud [ $x -eq 0 ] potom echo "Hodnota X je 0" jinak echo "Hodnota X není 0" fi
x=2 if [ $x -eq 0 ] then echo "Hodnota X je 0" elif [ $x -eq 1 ] then echo "Hodnota X je 1" elif [ $x -eq 2 ] pak echo "Hodnota of X je 2" jinak echo "Hodnota X není 0" fi
if npm -v then echo "NPM je v systému" jinak sudo apt install npm fi
npm
nebyl v systému nainstalován, příkaz npm -v
vrátil nenulový stav. Spuštění kódu tedy přešlo do jiný
bloku, kam instalujeme npm pomocí apt
správce balíčků. Jak vidíme, vybídl mě to k zadání hesla a začalo se s instalací npm.kdyby...jinak
blok uvnitř an -li
, jiný
nebo elif
blok:x=0 y=1 if [ $x -eq 0 ] then echo "X je 0" if [ $y -eq 1 ] then echo "Y je 1" jinak echo "Y není 1" fi else echo "X je ne 0" fi
pokud nginx -v, pak echo "NGINX je již nainstalován." jinak pokud sudo apt nainstaluje nginx, pak echo "Instalace NGINX úspěšná." elif sudo apt nainstalujte apache2 a poté echo "instalace APACHE2 úspěšná." else echo "Nelze nainstalovat žádný webový software." fi
elif
blokovat také.Provádění
kdyby...jinak
: Skripty a příkazový řádekkdyby...jinak
příkaz lze použít v prostředí Bash přímo nebo ze spustitelného souboru skriptu prostředí. Jakmile tlumočník Bash najde -li
, jiný
nebo elif
příkaz pokračuje v shellu, aby umožnil uživateli zadat blok kódu.#!/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ěly být specifikovány místo bash na začátku tohoto souboru.chmod +x test.sh
./test.sh
Závěr
kdyby...jinak
prohlášení je základním rysem Bash. Naučit se jeho používání jde dlouhou cestou při psaní základních i pokročilých skriptů.