Bash Scripting – příkaz If
Bash je tlumočník příkazových jazyků. Je to výchozí příkazový interpret na většině GNU/ Linuxové systémy a je široce dostupný na různých operačních systémech. Název je zkratka pro Bourne-Again SHell . Skriptování umožňuje provádění instrukcí, které by jinak byly prováděny jeden po druhém interaktivně.
V tomto článku budeme diskutovat o příkazu if ve skriptování bash.
Bash If prohlášení
Základní syntaxe příkazu `if` v Bash:
#!/bin/bash if [ condition ]; then # code to be executed if the condition is true fi
Vysvětlení:
-
if [ condition ]; then>: Tento řádek začíná příkaz if, kdecondition>je výraz, který je hodnocen. Pokud je podmínka pravdivá, kód uvnitřthen>blok se provede. -
# code to be executed if the condition is true>: Toto je blok kódu, který se provede, pokud je podmínka zadaná v příkazu if pravdivá. -
fi>: Označuje konec příkazu if.
Bash skript pro určení, zda je číslo sudé
Následuje příklad skript to vás vyzve k zadání čísla a poté zkontroluje, zda je dané číslo sudé.
#!/usr/bin/bash
# Tento skript vyzve uživatele k zadání čísla, zkontroluje, zda je sudé, a podle toho vytiskne zprávu.
# Vyzvěte uživatele, aby zadal čísloecho -n Zadejte číslo:
přečíst x# Zkontrolujte, zda je zadané číslo sudé
if [ $((x % 2)) == 0]; pak
echo Číslo je sudé
být
Vysvětlení:
-
#!/usr/bin/bash>: Toto je řádek shebang, který určuje cestu k interpretu Bash. Označuje, že skript by měl být spuštěn pomocí Bash. -
echo -n 'Enter Number: '>: Tento řádek vytiskne výzvu Zadejte číslo: bez znaku nového řádku (-n>volba). Čeká, až uživatel zadá číslo. -
read x>: Přečte uživatelský vstup a přiřadí jej k proměnnéx>. -
if [ $((x % 2)) == 0 ]; then>: Tento řádek kontroluje, zda zbytek dělení zadaného čísla (x>) o 2 se rovná 0. Pokud je pravda, znamená to, že číslo je sudé. -
echo 'Number is Even'>: Pokud je podmínka v příkazu if pravdivá, tento řádek vypíše do konzole Number is Even.
Výstup:
Bash skript pro určení, zda je číslo sudé
Poznámka: Skript nezpracovává případy, kdy uživatel zadá nečíselnou hodnotu. Pokud uživatel zadá nečíselnou hodnotu, může dojít k neočekávaným výsledkům. K vyřešení tohoto problému by bylo možné přidat další ověření vstupu.
Bash if-else prohlášení
Základní syntaxe příkazu „if-else“ v Bash:
#!/bin/bash
if [ podmínka ]; pak
# kód, který se má provést, pokud je podmínka pravdivá
jiný
# kód, který se má provést, pokud je podmínka nepravdivá
být
Vysvětlení:
-
if [ condition ]; then>: Tento řádek začíná příkaz if, kdecondition>je výraz, který je hodnocen. Pokud je podmínka pravdivá, kód uvnitřthen>blok se provede. -
# code to be executed if the condition is true>: Toto je blok kódu, který se provede, pokud je podmínka zadaná v příkazu if pravdivá. -
else>: Pokud je podmínka v příkazu if nepravdivá, kód uvnitř příkazuelse>blok se provede. -
# code to be executed if the condition is false>: Toto je blok kódu, který se provede, pokud je podmínka zadaná v příkazu if nepravdivá. -
fi>: Toto označuje konec příkazu if-else.
Jak najít větší číslo pomocí příkazů if-else ve skriptu Bash?
Zde je skript Bash pro zjištění většího počtu pomocí příkazu if-else v skriptu Bash.
#!/bin/bash
# Vyzvěte uživatele, aby zadal hodnotu pro xecho -n Zadejte hodnotu x:
přečíst xif [ $x -gt 5 ]; pak
echo x je větší než 5
jiný
echo x není větší než 5
být
Explantace:
- #!/bin/bash : Tento řádek se nazývá shebang a označuje, že skript by měl být interpretován a spuštěn pomocí shellu Bash.
- # Vyzvěte uživatele, aby zadal hodnotu pro x : Toto je komentář označující účel dalšího řádku.
- echo -n Zadejte hodnotu x: : Tento řádek vytiskne zprávu Zadejte hodnotu x: do terminálu bez přechodu na další řádek. Uživatel zadá jejich hodnotu na stejném řádku.
- přečíst x : Tento řádek přečte vstup uživatele a přiřadí jej proměnné ‚x‘.
- if [ $x -gt 5 ]; pak : Toto je příkaz if, který kontroluje, zda je hodnota ‚x‘ větší než 5.
- x $ : Představuje hodnotu proměnné ‚x‘.
- -gt : Znamená větší než v kontextu numerického srovnání.
- 5 : Porovnávaná hodnota.
- echo x je větší než 5 : Pokud je podmínka v předchozím řádku pravdivá, provede se tento řádek, tisk x je větší než 5 na terminál.
- jiný : Pokud je podmínka v příkazu if nepravdivá, skript skočí do bloku else.
- echo x není větší než 5 : Tento řádek se provede, pokud hodnota ‚x‘ není větší než 5, tisk x není větší než 5 na terminál.
- být : To znamená konec bloku if-else.
Výstup:
Nalezení většího čísla pomocí if-else
Bash if-elif-else Příkaz
The if-elif-else> příkaz v Bash se používá pro podmíněné větvení. Umožňuje zadat více podmínek a provádět různé bloky kódu na základě vyhodnocení těchto podmínek.
Základní syntaxe příkazu `if-elif-else` v Bash:
#!/bin/bash
if [podmínka1]; pak
# Kód, který se má provést, pokud je podmínka1 pravdivá
elif [podmínka2]; pak
# Kód, který se má provést, pokud je podmínka2 pravdivá
elif [podmínka3]; pak
# Kód, který se má provést, pokud je podmínka 3 pravdivá
jiný
# Kód se provede, pokud není splněna žádná z podmínek
být
Vysvětlení:
- if [podmínka1]; pak : Toto je výchozí bod
if-elif-else>prohlášení. Kód v tomto bloku bude proveden, pokudcondition1>je pravda. - # Kód, který se má provést, pokud je podmínka1 pravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition1>je pravda. - elif [podmínka2]; pak : Pokud
condition1>je nepravda, skript zkontrolujecondition2>. Licondition2>je true, kód v tomto bloku se provede. - # Kód, který se má provést, pokud je podmínka2 pravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition2>je pravda. - elif [podmínka3]; pak : Pokud obojí
condition1>acondition2>jsou nepravdivé, skript zkontrolujecondition3>. Licondition3>je true, kód v tomto bloku se provede. - # Kód, který se má provést, pokud je podmínka 3 pravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition3>je pravda. - jiný : Pokud žádná z předchozích podmínek (podmínka1, podmínka2, podmínka3 atd.) není pravdivá, kód v
else>blok se provede. - # Kód, který se má provést, pokud není splněna žádná z podmínek : Nahraďte tento komentář skutečným kódem, který chcete spustit, pokud není splněna žádná z podmínek.
- být : Toto znamená konec
if-elif-else>prohlášení. Slovo fi je napsáno pozpátku a používá se k uzavření podmíněných bloků v Bash.
Jak zjistit, zda je číslo kladné, záporné nebo nulové pomocí příkazu `if-elif-else` v Bash?
Pojďme rozšířit kód ve výše uvedeném příkladu a přidat podmínku pro kontrolu nuly.
#!/bin/bash
# Vyzvěte uživatele, aby zadal číslo
echo -n Zadejte číslo:
čti čif [ $num -gt 0 ]; pak
echo $num je kladné číslo.
elif [ $num -lt 0 ]; pak
echo $num je záporné číslo.
jiný
echo $num je nula.
být
Vysvětlení:
- #!/bin/bash : Tento řádek je shebang označující, že skript by měl být interpretován a spuštěn pomocí shellu Bash.
- # Vyzvěte uživatele, aby zadal číslo : Toto je komentář označující účel dalšího řádku.
- echo -n Zadejte číslo: : Tento řádek vytiskne zprávu Zadejte číslo: do terminálu bez přechodu na další řádek. Uživatel zadá své číslo na stejném řádku.
- čti č : Tento řádek přečte vstup uživatele a přiřadí jej proměnné ‚num‘.
- if [ $num -gt 0 ]; pak : Toto je příkaz if, který kontroluje, zda je hodnota ‚num‘ větší než 0.
- $num : Představuje hodnotu proměnné ‚num‘.
- -gt : Znamená větší než v kontextu numerického srovnání.
- 0 : Porovnávaná hodnota.
- echo $num je kladné číslo. : Pokud je podmínka v předchozím řádku pravdivá, provede se tento řádek, tisk $num je kladné číslo. do terminálu.
- elif [ $num -lt 0 ]; pak : Pokud je podmínka v příkazu if nepravdivá, tento řádek zkontroluje, zda je hodnota ‚num‘ menší než 0.
- $num : Představuje hodnotu proměnné ‚num‘.
- -lt : Znamená méně než v kontextu numerického srovnání.
- 0 : Porovnávaná hodnota.
- echo $num je záporné číslo. : Pokud je podmínka v příkazu elif pravdivá, tento řádek se provede, tisk $num je záporné číslo. do terminálu.
- jiný : Pokud jsou obě podmínky v příkazech if a elif nepravdivé, skript skočí do bloku else.
- echo $num je nula. : Tento řádek se provede, pokud hodnota ‚num‘ není větší než 0 a není menší než 0, tisk $num je nula. do terminálu.
- být : To znamená konec bloku if-elif-else.
Výstup:
pokud je číslo kladné, záporné nebo nulové Pomocí `if-elif-else`
Příkaz Bash Nested if
V Bash můžete použít vnořené if> příkazy k vytvoření složitějších podmíněných struktur. Zde je syntaxe pro vnořený if> prohlášení:
#!/bin/bash
if [podmínka1]; pak
# Kód, který se má provést, pokud je podmínka1 pravdivá
if [podmínka2]; pak
# Kód, který se má provést, pokud je podmínka2 pravdivá
jiný
# Kód, který se má provést, pokud je podmínka2 nepravdivá
být
jiný
# Kód, který se má provést, pokud je podmínka1 nepravdivá
být
Vysvětlení:
- if [podmínka1]; pak : Toto je vnější
if>prohlášení. Licondition1>je true, kód uvnitř tohoto bloku se provede. - # Kód, který se má provést, pokud je podmínka1 pravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition1>je pravda. - if [podmínka2]; pak : Uvnitř bloku vnější
if>prohlášení, existuje vnitřníif>prohlášení. Licondition2>je true, kód uvnitř tohoto bloku se provede. - # Kód, který se má provést, pokud je podmínka2 pravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition2>je pravda. - jiný : Pokud
condition2>ve vnitřnímif>prohlášení je nepravdivé, kód uvnitřelse>bloku vnitřníhoif>příkaz se provede. - # Kód, který se má provést, pokud je podmínka2 nepravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition2>je nepravdivé. - být : Toto označuje konec vnitřního
if>prohlášení. - jiný : Pokud
condition1>ve vnějšímif>prohlášení je nepravdivé, kód uvnitřelse>bloku vnějšíhoif>příkaz se provede. - # Kód, který se má provést, pokud je podmínka1 nepravdivá : Nahraďte tento komentář skutečným kódem, který chcete spustit
condition1>je nepravdivé. - být : Označuje konec vnější
if>prohlášení.
Jak zkontrolovat věkovou způsobilost a výhody pro seniory v Bash pomocí Nested If prohlášení?
Pojďme trochu vyladit výše uvedený kód, abychom použili vnořené-if.
#!/bin/bash
# Vyzvěte uživatele k zadání věku
echo -n Zadejte svůj věk:
číst věkif [ $věk -ge 18 ]; pak
echo Máte právo hlasovat.
if [ $věk -ge 65 ]; pak
echo Máte také nárok na dávky pro seniory.
jiný
echo Ještě nemáte nárok na dávky pro seniory.
být
jiný
echo Ještě nemáte právo hlasovat.
být
Vysvětlení:
- #!/bin/bash : Tento řádek je shebang označující, že skript by měl být interpretován a spuštěn pomocí shellu Bash.
- # Vyzvěte uživatele k zadání věku : Toto je komentář označující účel dalšího řádku.
- echo -n Zadejte svůj věk: : Tento řádek vytiskne zprávu Zadejte svůj věk: do terminálu bez přechodu na další řádek. Uživatel zadá svůj věk na stejném řádku.
- číst věk : Tento řádek přečte vstup uživatele a přiřadí jej proměnné ‘věk’.
- if [ $věk -ge 18 ]; pak : Toto je příkaz if, který kontroluje, zda je hodnota ‚věku‘ větší nebo rovna 18.
- $věk : Představuje hodnotu proměnné ‘věk’.
- -ge : Znamená větší nebo rovno v kontextu numerického srovnání.
- 18 : Porovnávaná hodnota.
- echo Máte právo hlasovat. : Pokud je podmínka v předchozím řádku pravdivá, bude tento řádek proveden a vytištěno Jste oprávněni hlasovat. do terminálu.
- if [ $věk -ge 65 ]; pak : Uvnitř prvního bloku if je to další příkaz if, který kontroluje, zda je hodnota ‘věk’ větší nebo rovna 65.
- $věk : Představuje hodnotu proměnné ‘věk’.
- -ge : Znamená větší nebo rovno v kontextu numerického srovnání.
- 65 : Porovnávaná hodnota.
- echo Máte také nárok na dávky pro seniory. : Pokud je podmínka ve vnitřním příkazu if pravdivá, tento řádek se provede a vytiskne Máte také nárok na dávky pro seniory. do terminálu.
- jiný : Pokud je podmínka ve vnitřním příkazu if nepravdivá, skript skočí do bloku else uvnitř vnějšího příkazu if.
- echo Ještě nemáte nárok na dávky pro seniory. : Tento řádek se provede, pokud hodnota ‚věk‘ není větší nebo rovna 65, tisk Ještě nemáte nárok na dávky pro seniory. do terminálu.
- být : To znamená konec vnitřního bloku if-else.
- jiný : Pokud je podmínka ve vnějším příkazu if nepravdivá, skript skočí do bloku else.
- echo Ještě nemáte právo hlasovat. : Tento řádek se provede, pokud hodnota ‚věk‘ není větší nebo rovna 18, tisk Ještě nemáte právo hlasovat. do terminálu.
- být : To znamená konec vnějšího bloku if-else.
Výstup:
nested-if pomocí Bash
Často kladené otázky a některé poznámky k CONDITION
Toto je několik věcí, které bych měl mít na paměti při psaní testovacích podmínek v bash.
1. Zajistěte mezery mezi hranatými závorkami a skutečným kontrolním/porovnávacím příkazem.
Například následující nebude fungovat.
if [$x==0]Bash ohlásí chybu o a chybí] .
2. Vždy ukončete řádek před přidáním nového klíčového slova, např. potom.
If, then, else, elif a fi jsou všechna klíčová slova shellu, což znamená, že je nelze použít na stejném řádku. Vložte ; mezi předchozím příkazem a klíčovým slovem nebo začněte nový řádek klíčovým slovem.
3. Chcete-li použít mnoho podmínek v jednom příkazu, použijte logické operátory.
Pro použití více podmínek můžeme použít logické operátory AND(&&) nebo logické operátory OR(||).
Například:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo 'x is greatest' fiZde je -ge zkratkou pro větší než nebo rovno
4. Jak porovnat řetězce v příkazu Bash if?
Použijte ` => `> operátor pro rovnost řetězce a ` !=`> pro nerovnost.
Například:
if [ '$string1' = '$string2' ]; then # Code to execute if strings are equal else # Code to execute if strings are not equal fi
5. Mohu použít regulární výrazy v příkazech Bash if?
Ano, můžete použít ` [[ ... ]]`> konstrukt pro pokročilejší porovnávání řetězců s regulárními výrazy.
Napří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. Jak zkontrolovat, zda soubor existuje ve skriptu Bash pomocí příkazu if?
Můžete použít ` -e`> příznak ve stavu, takto:
if [ -e 'filename' ]; then # Code to execute if the file exists else # Code to execute if the file does not exist fi
7. Jaká je syntaxe příkazu if-else ve skriptování Bash?
Základní syntaxe pro an 'jestli-jinak' příkaz ve skriptování Bash je:
if [ condition ]; then # Code to execute if condition is true else # Code to execute if condition is false fi
8. Jak mohu použít příkaz elif ve skriptu Bash?
' elif`> příkaz se používá ke kontrole dalších podmínek, pokud je původní if> podmínka je nepravdivá.
Zde je pří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. Jak mohu použít logické operátory (AND, OR) v příkazech Bash if?
Můžete použít ` -a`> pro logické AND a ` -o`> pro logické OR.
Například:
if [ condition1 -a condition2 ]; then # Code to execute if both conditions are true fi
Závěr
V tomto článku jsme diskutovali o skriptování Bash, které je jako super užitečný nástroj pro to, aby váš počítač dělal věci automaticky. Tento článek nás poučil o příkazu if v Bash, který je jako rozhodovací orgán ve skriptech. Naučili jsme se základy, viděli příklady, jako je kontrola, zda je číslo sudé, nebo zjišťování, zda někdo může hlasovat, a dokonce jsme prozkoumali chytřejší věci, jako je zvládnutí mnoha podmínek nebo vkládání příkazů if do sebe. Článek poskytl jasná vysvětlení, příklady a odpověděl na běžné otázky, které nám pomohly zlepšit používání skriptů Bash. Hlavním úkolem je dávat pozor na detaily, jako jsou mezery a speciální pravidla, aby naše skripty fungovaly hladce a usnadňovaly zpracování úkolů na počítači.