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, kdecondition>je výraz, ktorý sa vyhodnocuje. Ak je podmienka pravdivá, kód vnútrithen>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 čísloecho -n Zadajte číslo:
čítaj x# Skontrolujte, či je zadané číslo párne
if [ $((x % 2)) == 0]; potom
echo Číslo je párne
byť
Vysvetlenie:
-
#!/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. -
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. -
read x>: Prečíta vstup používateľa a priradí ho k premennejx>. -
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. -
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
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, kdecondition>je výraz, ktorý sa vyhodnocuje. Ak je podmienka pravdivá, kód vnútrithen>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útrielse>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 xecho -n Zadajte hodnotu x:
čítaj xif [ $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
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á, akcondition1>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 skontrolujecondition2>. Akcondition2>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>acondition2>sú nepravdivé, skript skontrolujecondition3>. Akcondition3>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“.
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. Akcondition1>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. Akcondition2>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útornomif>vyhlásenie je nepravdivé, kód vnútrielse>bloku vnútornéhoif>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šomif>vyhlásenie je nepravdivé, kód vnútrielse>blok vonkajšiehoif>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ť vekif [ $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
Č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' fiTu 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.