Bash Scripting – If Statement

Bash Scripting – If Statement

Bash je tlmočník príkazových jazykov. Je to predvolený príkazový interpret na väčšine GNU/ Linuxové systémy a je široko dostupný v rôznych operačných systémoch. Názov je skratka pre Bourne-Again SHell . Skriptovanie umožňuje vykonávať inštrukcie, ktoré by sa inak vykonávali jeden po druhom interaktívne.

V tomto článku budeme diskutovať o príkaze if v skriptovaní bash.

Vyhlásenie Bash If

Základná syntax príkazu „if“ v Bash:

#!/bin/bash  if [ condition ]; then  # code to be executed if the condition is true fi 

Vysvetlenie:

  • if [ condition ]; then> : Tento riadok začína príkaz if, kde condition> je výraz, ktorý sa vyhodnocuje. Ak je podmienka pravdivá, kód vnútri then> blok sa vykoná.
  • # code to be executed if the condition is true> : Toto je blok kódu, ktorý sa vykoná, ak je podmienka uvedená v príkaze if pravdivá.
  • fi> : Toto označuje koniec príkazu if.

Bash skript na určenie, či je číslo párne

Nasleduje príklad skript to vás vyzve na zadanie čísla a potom skontroluje, či je dané číslo párne.

#!/usr/bin/bash
# Tento skript vyzve používateľa, aby zadal číslo, skontroluje, či je párne, a podľa toho vytlačí správu.
# Vyzvite používateľa, aby zadal číslo

echo -n Zadajte číslo:
čítaj x

# Skontrolujte, či je zadané číslo párne
if [ $((x % 2)) == 0]; potom
echo Číslo je párne
byť

Vysvetlenie:

  1. #!/usr/bin/bash> : Toto je riadok shebang, ktorý špecifikuje cestu k tlmočníkovi Bash. Označuje, že skript by sa mal spustiť pomocou Bash.
  2. echo -n 'Enter Number: '> : Tento riadok vytlačí výzvu Zadajte číslo: bez znaku nového riadka ( -n> možnosť). Čaká, kým používateľ zadá číslo.
  3. read x> : Prečíta vstup používateľa a priradí ho k premennej x> .
  4. if [ $((x % 2)) == 0 ]; then> : Tento riadok kontroluje, či zvyšok delenia zadaného čísla ( x> ) o 2 sa rovná 0. Ak je pravda, znamená to, že číslo je párne.
  5. echo 'Number is Even'> : Ak je podmienka v príkaze if pravdivá, tento riadok vypíše do konzoly Number is Even.

Výkon:

Bash skript na určenie, či je číslo párne

Bash skript na určenie, či je číslo párne

Poznámka: Skript nerieši prípady, keď používateľ zadá nečíselné hodnoty. Ak používateľ zadá nenumerickú hodnotu, môže to viesť k neočakávaným výsledkom. Na vyriešenie tohto problému by sa mohlo pridať ďalšie overenie vstupu.

Bash if-else vyhlásenie

Základná syntax príkazu „if-else“ v Bash:

#!/bin/bash

ak [ podmienka ]; potom

# kód, ktorý sa má vykonať, ak je podmienka pravdivá

inak

# kód, ktorý sa má vykonať, ak je podmienka nepravdivá

byť

Vysvetlenie:

  • if [ condition ]; then> : Tento riadok začína príkaz if, kde condition> je výraz, ktorý sa vyhodnocuje. Ak je podmienka pravdivá, kód vnútri then> blok sa vykoná.
  • # code to be executed if the condition is true> : Toto je blok kódu, ktorý sa vykoná, ak je podmienka uvedená v príkaze if pravdivá.
  • else> : Ak je podmienka v príkaze if nepravdivá, kód vo vnútri else> blok sa vykoná.
  • # code to be executed if the condition is false> : Toto je blok kódu, ktorý sa vykoná, ak je podmienka špecifikovaná v príkaze if nepravdivá.
  • fi> : Toto označuje koniec príkazu if-else.

Ako nájsť väčšie číslo pomocou príkazov if-else v skripte Bash?

Tu je skript Bash na zistenie väčšieho počtu pomocou príkazu if-else v skripte Bash.

#!/bin/bash
# Vyzvite používateľa, aby zadal hodnotu pre x

echo -n Zadajte hodnotu x:
čítaj x

if [ $x -gt 5 ]; potom
echo x je väčšie ako 5
inak
echo x nie je väčšie ako 5
byť

Explantácia:

  • #!/bin/bash : Tento riadok sa nazýva shebang a označuje, že skript by sa mal interpretovať a vykonať pomocou shellu Bash.
  • # Vyzvite používateľa, aby zadal hodnotu pre x : Toto je komentár označujúci účel nasledujúceho riadku.
  • echo -n Zadajte hodnotu x: : Tento riadok vytlačí správu Zadajte hodnotu x: do terminálu bez prechodu na ďalší riadok. Používateľ zadá svoju hodnotu do rovnakého riadku.
  • čítaj x : Tento riadok číta vstup používateľa a priraďuje ho k premennej „x“.
  • if [ $x -gt 5 ]; potom : Toto je príkaz if, ktorý kontroluje, či je hodnota „x“ väčšia ako 5.
    • x $ : Predstavuje hodnotu premennej „x“.
    • -gt : Znamená väčšie ako v kontexte číselného porovnania.
    • 5 : Hodnota, s ktorou sa porovnáva.
  • echo x je väčšie ako 5 : Ak je podmienka v predchádzajúcom riadku pravdivá, tento riadok sa vykoná, tlač x je väčšia ako 5 na terminál.
  • inak : Ak je podmienka v príkaze if nepravdivá, skript preskočí do bloku else.
  • echo x nie je väčšie ako 5 : Tento riadok sa vykoná, ak hodnota „x“ nie je väčšia ako 5, tlač x nie je väčšia ako 5 na terminál.
  • byť : Toto znamená koniec bloku if-else.

Výkon:

Nájdenie väčšieho čísla pomocou if-else

Nájdenie väčšieho čísla pomocou if-else

Vyhlásenie Bash if-elif-else

The if-elif-else> príkaz v Bash sa používa na podmienené vetvenie. Umožňuje vám špecifikovať viacero podmienok a vykonávať rôzne bloky kódu na základe vyhodnotenia týchto podmienok.

Základná syntax príkazu „if-elif-else“ v Bash:

#!/bin/bash

if [podmienka1]; potom
# Kód, ktorý sa má vykonať, ak je podmienka 1 pravdivá
elif [podmienka2]; potom
# Kód, ktorý sa má vykonať, ak je podmienka 2 pravdivá
elif [podmienka3]; potom
# Kód, ktorý sa má vykonať, ak je podmienka 3 pravdivá
inak
# Kód, ktorý sa má vykonať, ak nie je splnená žiadna z podmienok
byť

Vysvetlenie:

  • if [podmienka1]; potom : Toto je východiskový bod if-elif-else> vyhlásenie. Kód v tomto bloku sa vykoná, ak condition1> je pravda.
  • # Kód, ktorý sa má vykonať, ak je podmienka 1 pravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition1> je pravda.
  • elif [podmienka2]; potom : Ak condition1> je nepravda, skript skontroluje condition2> . Ak condition2> je true, vykoná sa kód v tomto bloku.
  • # Kód, ktorý sa má vykonať, ak je podmienka 2 pravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition2> je pravda.
  • elif [podmienka3]; potom : Ak oboje condition1> a condition2> sú nepravdivé, skript skontroluje condition3> . Ak condition3> je true, vykoná sa kód v tomto bloku.
  • # Kód, ktorý sa má vykonať, ak je podmienka 3 pravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition3> je pravda.
  • inak : Ak žiadna z predchádzajúcich podmienok (podmienka1, podmienka2, podmienka3 atď.) nie je pravdivá, kód v else> blok sa vykoná.
  • # Kód, ktorý sa má vykonať, ak nie je splnená žiadna z podmienok : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť, ak nie je splnená žiadna z podmienok.
  • byť : Toto znamená koniec if-elif-else> vyhlásenie. Slovo fi je napísané spätne a používa sa na zatvorenie podmienených blokov v Bash.

Ako zistiť, či je číslo kladné, záporné alebo nulové pomocou príkazu „if-elif-else“ v Bash?

Rozšírme kód vo vyššie uvedenom príklade a pridajte podmienku na kontrolu nuly.

#!/bin/bash

# Vyzvite používateľa, aby zadal číslo

echo -n Zadajte číslo:
čítaj č

if [ $num -gt 0 ]; potom
echo $num je kladné číslo.
elif [ $num -lt 0 ]; potom
echo $num je záporné číslo.
inak
echo $num je nula.
byť

Vysvetlenie:

  • #!/bin/bash : Tento riadok je symbolom, ktorý naznačuje, že skript by sa mal interpretovať a vykonávať pomocou shellu Bash.
  • # Vyzvite používateľa, aby zadal číslo : Toto je komentár označujúci účel nasledujúceho riadku.
  • echo -n Zadajte číslo: : Tento riadok vytlačí správu Zadajte číslo: do terminálu bez prechodu na ďalší riadok. Používateľ zadá svoje číslo do toho istého riadku.
  • čítaj č : Tento riadok číta vstup používateľa a priraďuje ho k premennej „num“.
  • if [ $num -gt 0 ]; potom : Toto je príkaz if, ktorý kontroluje, či je hodnota „num“ väčšia ako 0.
    • $num : Predstavuje hodnotu premennej ‘num’.
    • -gt : Znamená väčšie ako v kontexte číselného porovnania.
    • 0 : Hodnota, s ktorou sa porovnáva.
  • echo $num je kladné číslo. : Ak je podmienka v predchádzajúcom riadku pravdivá, tento riadok sa vykoná, tlač $num je kladné číslo. do terminálu.
  • elif [ $num -lt 0 ]; potom : Ak je podmienka v príkaze if nepravdivá, tento riadok skontroluje, či je hodnota „num“ menšia ako 0.
    • $num : Predstavuje hodnotu premennej ‘num’.
    • -lt : Znamená menej ako v kontexte číselného porovnania.
    • 0 : Hodnota, s ktorou sa porovnáva.
  • echo $num je záporné číslo. : Ak je podmienka v príkaze elif pravdivá, tento riadok sa vykoná, vytlačenie $num je záporné číslo. do terminálu.
  • inak : Ak sú obidve podmienky v príkazoch if a elif nepravdivé, skript preskočí do bloku else.
  • echo $num je nula. : Tento riadok sa vykoná, ak hodnota „num“ nie je väčšia ako 0 a nie je menšia ako 0, tlač $num je nula. do terminálu.
  • byť : Toto znamená koniec bloku if-elif-else.

Výkon:

ak je číslo kladné, záporné alebo nulové, použite príkaz „if-elif-else“.

ak je číslo kladné, záporné alebo nulové, použite príkaz „if-elif-else“.

Bash Nested if Statement

V Bash môžete použiť vnorené if> príkazy na vytvorenie zložitejších podmienených štruktúr. Tu je syntax pre vnorené if> vyhlásenie:

#!/bin/bash

if [podmienka1]; potom
# Kód, ktorý sa má vykonať, ak je podmienka 1 pravdivá
if [podmienka2]; potom
# Kód, ktorý sa má vykonať, ak je podmienka 2 pravdivá
inak
# Kód, ktorý sa má vykonať, ak je podmienka 2 nepravdivá
byť
inak
# Kód, ktorý sa má vykonať, ak je podmienka 1 nepravdivá
byť

Vysvetlenie:

  • if [podmienka1]; potom : Toto je vonkajší if> vyhlásenie. Ak condition1> je pravda, vykoná sa kód v tomto bloku.
  • # Kód, ktorý sa má vykonať, ak je podmienka 1 pravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition1> je pravda.
  • if [podmienka2]; potom : Vo vnútri bloku vonkajšieho if> vyhlásenie, existuje vnútorný if> vyhlásenie. Ak condition2> je pravda, vykoná sa kód v tomto bloku.
  • # Kód, ktorý sa má vykonať, ak je podmienka 2 pravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition2> je pravda.
  • inak : Ak condition2> vo vnútornom if> vyhlásenie je nepravdivé, kód vnútri else> bloku vnútorného if> príkaz sa vykoná.
  • # Kód, ktorý sa má vykonať, ak je podmienka 2 nepravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition2> je nepravdivé.
  • byť : Toto označuje koniec vnútorného if> vyhlásenie.
  • inak : Ak condition1> vo vonkajšom if> vyhlásenie je nepravdivé, kód vnútri else> blok vonkajšieho if> príkaz sa vykoná.
  • # Kód, ktorý sa má vykonať, ak je podmienka 1 nepravdivá : Nahraďte tento komentár skutočným kódom, ktorý chcete spustiť condition1> je nepravdivé.
  • byť : Označuje koniec vonkajšej strany if> vyhlásenie.

Ako skontrolovať vekovú spôsobilosť a výhody pre seniorov v Bash pomocou Nested If výkazov?

Poďme trochu vyladiť kód vyššie, aby sme použili vnorené-if.

#!/bin/bash
# Vyzvite používateľa, aby zadal vek
echo -n Zadajte svoj vek:
čítať vek

if [ $vek -ge 18 ]; potom
echo Máte právo hlasovať.
if [ $vek -ge 65 ]; potom
echo Máte tiež nárok na výhody pre seniorov.
inak
echo Ešte nemáte nárok na dávky pre seniorov.
byť
inak
echo Ešte nemáte právo hlasovať.
byť

Vysvetlenie:

  • #!/bin/bash : Tento riadok je symbolom, ktorý naznačuje, že skript by sa mal interpretovať a vykonať pomocou shellu Bash.
  • # Vyzvite používateľa, aby zadal vek : Toto je komentár označujúci účel nasledujúceho riadku.
  • echo -n Zadajte svoj vek: : Tento riadok vytlačí správu Zadajte svoj vek: do terminálu bez prechodu na ďalší riadok. Používateľ zadá svoj vek do rovnakého riadku.
  • čítať vek : Tento riadok číta vstup používateľa a priraďuje ho k premennej ‘vek’.
  • if [ $vek -ge 18 ]; potom : Toto je príkaz if, ktorý kontroluje, či je hodnota „vek“ väčšia alebo rovná 18.
    • $vek : Predstavuje hodnotu premennej ‘vek’.
    • -ge : Znamená väčšie alebo rovné v kontexte numerického porovnania.
    • 18 : Hodnota, s ktorou sa porovnáva.
  • echo Máte právo hlasovať. : Ak je podmienka v predchádzajúcom riadku pravdivá, tento riadok sa vykoná a vytlačí sa Máte právo hlasovať. do terminálu.
  • if [ $vek -ge 65 ]; potom : V rámci prvého bloku if je to ďalší príkaz if, ktorý kontroluje, či je hodnota „vek“ väčšia alebo rovná 65.
    • $vek : Predstavuje hodnotu premennej ‘vek’.
    • -ge : Znamená väčšie alebo rovné v kontexte číselného porovnania.
    • 65 : Hodnota, s ktorou sa porovnáva.
  • echo Máte tiež nárok na výhody pre seniorov. : Ak je podmienka vo vnútornom príkaze if pravdivá, tento riadok sa vykoná a vytlačí sa Máte tiež nárok na výhody pre seniorov. do terminálu.
  • inak : Ak je podmienka vo vnútornom príkaze if nepravdivá, skript preskočí na blok else vo vonkajšom príkaze if.
    • echo Ešte nemáte nárok na dávky pre seniorov. : Tento riadok sa vykoná, ak hodnota „vek“ nie je väčšia alebo rovná 65, tlač Ešte nemáte nárok na výhody pre seniorov. do terminálu.
  • byť : Toto znamená koniec vnútorného bloku if-else.
  • inak : Ak je podmienka vo vonkajšom príkaze if nepravdivá, skript preskočí do bloku else.
    • echo Ešte nemáte právo hlasovať. : Tento riadok sa spustí, ak hodnota „vek“ nie je väčšia alebo rovná 18, tlač Ešte nemáte právo hlasovať. do terminálu.
  • byť : Označuje koniec vonkajšieho bloku if-else.

Výkon:

vnorené-ak pomocou Bash

vnorené-ak pomocou Bash

Často kladené otázky a niekoľko poznámok o stave CONDITION

Toto je niekoľko vecí, ktoré by som mal mať na pamäti pri písaní testovacích podmienok v bash.

1. Zaistite medzery medzi zátvorkami a skutočným vyhlásením o kontrole/porovnaní.

Napríklad nasledujúce nebude fungovať.

if [$x==0] 

Bash ohlási chybu o a chýba] .

2. Vždy ukončite riadok pred pridaním nového kľúčového slova, ako napríklad potom.

Ak sú teda elif a fi všetky kľúčové slová shellu, znamená to, že ich nemožno použiť na rovnakom riadku. Vložte ; medzi predchádzajúcim príkazom a kľúčovým slovom alebo začnite nový riadok s kľúčovým slovom.

3. Ak chcete použiť veľa podmienok v jednom príkaze, použite logické operátory.

Na použitie viacerých podmienok môžeme použiť logické operátory AND(&&) alebo logické operátory OR(||).

Napríklad:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then  echo 'x is greatest' fi 

Tu je -ge skratka pre väčšie alebo rovné

4. Ako porovnať reťazce v príkaze Bash if?

Použite ` => `> operátor pre reťazcovú rovnosť a ` !=`> pre nerovnosť.

Napríklad:

if [ '$string1' = '$string2' ]; then  # Code to execute if strings are equal else  # Code to execute if strings are not equal fi 

5. Môžem použiť regulárne výrazy v príkazoch Bash if?

Áno, môžete použiť ` [[ ... ]]`> konštrukt pre pokročilejšie porovnávanie reťazcov s regulárnymi výrazmi.

Napríklad:

if [[ '$string' =~ ^[0-9]+$ ]]; then  # Code to execute if the string contains only numbers else  # Code to execute if the string does not contain only numbers fi 

6. Ako skontrolovať, či súbor existuje v Bash skripte pomocou príkazu if?

Môžete použiť ` -e`> príznak v stave, ako je tento:

if [ -e 'filename' ]; then  # Code to execute if the file exists else  # Code to execute if the file does not exist fi 

7. Aká je syntax pre príkaz if-else v skriptovaní Bash?

Základná syntax pre an 'ak-iné'. vyhlásenie v skriptovaní Bash je:

if [ condition ]; then  # Code to execute if condition is true else  # Code to execute if condition is false fi 

8. Ako použijem príkaz elif v Bash skripte?

' elif`> vyhlásenie sa používa na kontrolu dodatočných podmienok, ak je pôvodný if> podmienka je nepravdivá.

Tu je príklad:

if [ condition1 ]; then  # Code to execute if condition1 is true elif [ condition2 ]; then  # Code to execute if condition2 is true else  # Code to execute if none of the conditions are true fi 

9. Ako môžem použiť logické operátory (AND, OR) v príkazoch Bash if?

Môžete použiť ` -a`> pre logické AND a ` -o`> pre logické OR.

Napríklad:

if [ condition1 -a condition2 ]; then  # Code to execute if both conditions are true fi 

Záver

V tomto článku sme diskutovali o skriptovaní Bash, ktoré je ako super užitočný nástroj na to, aby váš počítač robil veci automaticky. Tento článok nás naučil o príkaze if v Bash, ktorý je ako rozhodovateľ v skriptoch. Naučili sme sa základy, videli sme príklady, ako je kontrola, či je číslo párne, alebo zisťovanie, či niekto môže hlasovať, a dokonca sme preskúmali šikovnejšie veci, ako je zvládanie mnohých podmienok alebo vkladanie výrokov if do seba. Článok poskytol jasné vysvetlenia, príklady a odpovedal na bežné otázky, ktoré nám pomôžu zlepšiť sa v používaní skriptov Bash. Hlavnou vecou je dávať pozor na detaily, ako sú medzery a špeciálne pravidlá, takže naše skripty fungujú hladko a uľahčujú prácu s úlohami na počítači.