V tomto tématu pochopíme, jak používat pokud prohlášení ve skriptech Bash, abyste dokončili naše automatizované úkoly.
Bash, pokud jsou prohlášení prospěšná. Používají se k provádění podmíněných úkolů v sekvenčním toku provádění příkazů. Pokud nám příkazy obvykle umožňují rozhodovat se v našich Bash skriptech. Pomáhají nám rozhodnout se, zda spustit nebo nespustit část kódů na základě podmínky, kterou můžeme nastavit.
Základní příkazy if
Základní příkaz if nařizuje, že pokud je určitá podmínka pravdivá, provede se pouze daná sada akcí. Pokud to není pravda, pak tyto akce neprovádějte. Pokud je prohlášení založeno na následujícím formátu:
Syntax
if [ expression ]; then statements fi
Prohlášení mezi pak a být (Pokud zpětně) bude provedeno pouze v případě, že výraz (mezi hranatými závorkami) je pravdivý.
Poznámka:Dodržujte mezery použité v prvním řádku a středník na konci prvního řádku; obojí je povinné používat.Pokud podmíněné prohlášeníkončí sbýt.
- Pro použití více podmínek s operátorem AND:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- Pro použití více podmínek s operátorem OR:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- Pro složené výrazy s operátory AND & OR můžeme použít následující syntaxi:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Následuje několik příkladů demonstrujících použití příkazu if:
Příklad 1
V tomto příkladu zadejte libovolné číslo uživatelem a zkontrolujte, zda je hodnota větší než 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Výstup
Pokud zadáme číslo 159, výstup bude vypadat takto:
Příklad 2
V tomto příkladu demonstrujeme použití if prohlášení s jednoduchým scénářem porovnání dvou řetězců:
#!/bin/bash # if condition is true if [ 'myfile' == 'myfile' ]; then echo 'true condition' fi # if condition is false if [ 'myfile' == 'yourfile' ]; then echo 'false condition' fi
Výstup
Příklad 3
V tomto příkladu si ukážeme, jak porovnávat čísla pomocí příkazu if:
název speciálních znaků
#!/bin/bash #if condition (greater than) is true if [ 10 -gt 3 ]; then echo '10 is greater than 3.' fi #if condition (greater than) is false if [ 3 -gt 10 ]; then echo '3 is not greater than 10.' fi #if condition (lesser than) is true if [ 3 -lt 10 ]; then echo '3 is less than 10.' fi #if condition (lesser than) is false if [ 10 -lt 3 ]; then echo '10 is not less than 3.' fi #if condition (equal to) is true if [ 10 -eq 10 ]; then echo '10 is equal to 10.' fi #if condition (equal to) is false if [ 10 -eq 9 ]; then echo '10 is not equal to 9' fi
Výstup
Příklad 4
V tomto příkladu definujeme, jak použít operátor AND k zahrnutí více podmínek do výrazu if:
#!/bin/bash # TRUE && TRUE if [ 8 -gt 6 ] && [ 10 -eq 10 ]; then echo 'Conditions are true' fi # TRUE && FALSE if [ 'mylife' == 'mylife' ] && [ 3 -gt 10 ]; then echo 'Conditions are false' fi
Výstup
10 ml v oz
Příklad 5
V tomto příkladu definujeme, jak použít operátor OR k zahrnutí více podmínek do výrazu if:
#!/bin/bash # TRUE || FALSE if [ 8 -gt 7 ] || [ 10 -eq 3 ]; then echo ' Condition is true. ' fi # FALSE || FALSE if [ 'mylife' == 'yourlife' ] || [ 3 -gt 10 ]; then echo ' Condition is false. ' fi
Výstup
Příklad 6
V tomto příkladu definujeme, jak používat AND a OR k zahrnutí více podmínek do výrazu if:
#!/bin/bash # TRUE && FALSE || FALSE || TRUE if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]]; then echo 'Condition is true.' fi # TRUE && FALSE || FALSE if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]]; then echo 'Condition is false' fi
Výstup
Možnosti pro příkaz If v Bash Scripting
If příkaz obsahuje mnoho možností k provedení konkrétního úkolu. Tyto možnosti lze použít pro operace se soubory, operace s řetězci atd. Níže jsou uvedeny některé nejčastěji používané možnosti:
Možnosti (operátoři) | Popis |
---|---|
! VÝRAZ | Chcete-li zkontrolovat, zda je výraz EXPRESSION nepravdivý. |
-n STRING | Chcete-li zkontrolovat, zda je délka STRING větší než nula. |
-z STRING | Chcete-li zkontrolovat, zda je délka STRING nula (tj. je prázdná) |
STRING1 == STRING2 | Chcete-li zkontrolovat, zda se STRING1 rovná STRING2. |
STRING1 != STRING2 | Chcete-li zkontrolovat, zda STRING1 není rovno STRING2. |
INTEGER1 -ekv INTEGER2 | Chcete-li zkontrolovat, zda je INTEGER1 číselně rovno INTEGER2. |
INTEGER1 -gt INTEGER2 | Chcete-li zkontrolovat, zda je INTEGER1 číselně větší než INTEGER2. |
INTEGER1 -lt INTEGER2 | Chcete-li zkontrolovat, zda je INTEGER1 číselně menší než INTEGER2. |
-d SOUBOR | Chcete-li zkontrolovat, zda existuje FILE a zda se jedná o adresář. |
-e SOUBOR | Chcete-li zkontrolovat, zda existuje FILE. |
-r SOUBOR | Chcete-li zkontrolovat, zda existuje SOUBOR a je uděleno oprávnění ke čtení. |
-s SOUBOR | Pro kontrolu, zda FILE existuje a jeho velikost je větší než nula (což znamená, že není prázdný). |
-w SOUBOR | Chcete-li zkontrolovat, zda existuje FILE a zda je uděleno oprávnění k zápisu. |
x SOUBOR | Chcete-li zkontrolovat, zda existuje SOUBOR a je uděleno oprávnění ke spuštění. |
Vnořené If
Ve vašem bash skriptu můžete použít tolik příkazů „if“, kolik je potřeba. Je také možné použít příkaz if uvnitř jiného „příkazu if“. Je známý jako Nested If Statement.
Příklad
V tomto příkladu zjistíme 'je-li dané číslo větší než 50 a je-li sudé' pomocí vnořeného výrazu if.
#!/bin/bash #Nested if statement if [ -gt 50 ] then echo 'Number is greater than 50.' if (( % 2 == 0 )) then echo 'and it is an even number.' fi fi
Výstup
Pokud zadáme hodnotu argumentu jako 100, výstup bude vypadat takto:
Závěr
V tomto tématu jsme diskutovali o tom, jak bychom mohli použít podmíněné větvení v sekvenčním toku provádění příkazů pomocí příkazu bash if.