Bash Scripting – příkaz If

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, kde condition> 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 číslo

echo -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í:

  1. #!/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.
  2. echo -n 'Enter Number: '> : Tento řádek vytiskne výzvu Zadejte číslo: bez znaku nového řádku ( -n> volba). Čeká, až uživatel zadá číslo.
  3. read x> : Přečte uživatelský vstup a přiřadí jej k proměnné x> .
  4. 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é.
  5. 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é

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, kde condition> 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říkazu else> 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 x

echo -n Zadejte hodnotu x:
přečíst x

if [ $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

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, pokud condition1> 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 zkontroluje condition2> . Li condition2> 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> a condition2> jsou nepravdivé, skript zkontroluje condition3> . Li condition3> 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`

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í. Li condition1> 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í. Li condition2> 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ím if> prohlášení je nepravdivé, kód uvnitř else> bloku vnitřního if> 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ším if> prohlášení je nepravdivé, kód uvnitř else> bloku vnějšího if> 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ěk

if [ $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

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' fi 

Zde 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.