Bash 'if else' prohlášení: Návod a příklady

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í elifa 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 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í.

Pokud žádná z podmínek nevrátí stav 0, 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.

Všimněte si, ž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

Pro provedení bloku kódu pokud má proměnná konkrétní hodnotu:

x=0 pokud [ $x -eq 0 ] potom echo "Hodnota X je 0" jinak echo "Hodnota X není 0" fi

Chcete-li zkontrolovat více hodnot:

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

Podmínky mohou být libovolné příkazy Linuxu. Odpovídající blok kódu se spustí, pokud příkaz proběhne úspěšně.

if npm -v then echo "NPM je v systému" jinak sudo apt install npm fi

Ve výše uvedeném příkladu od 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.

Můžeme zahnízdit i další 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

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:

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

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ř elif blokovat také.

Provádění kdyby...jinak: Skripty a příkazový řádek

Podobně jako jakýkoli Bash kód, kdyby...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.

Uživatel může také uložit tento kód 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ěly být specifikovány místo bash na začátku tohoto souboru.

Chcete-li tomuto souboru udělit oprávnění ke spuštění, spusťte:

chmod +x test.sh

Nakonec pro spuštění souboru spusťte:

./test.sh

Závěr

Podobně jako jakýkoli programovací jazyk, 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ů.