logo

Bash If

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:

Bash If prohlášení

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

Bash If prohlášení

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

Bash If prohlášení

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
Bash If prohlášení

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

Bash If prohlášení

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

Bash If prohlášení

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:

Bash If prohlášení

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.