Jak zvládnout podmíněnou logiku v Bash

Jak Zvladnout Podminenou Logiku V Bash



Použití podmíněné logiky je velmi podstatnou součástí každého programovacího jazyka. Podmíněná logika může být implementována v Bash různými způsoby, jak vyřešit problémy s programováním. Metody použití podmíněné logiky v Bash prostřednictvím různých typů příkazů „if“ a „case“ k porovnání řetězcových a číselných hodnot, kontrole obsahu proměnné, kontrole existence souboru nebo adresáře atd. jsou ukázány v tomto návodu. .

Seznam obsahu:

  1. Použití prohlášení „Pokud“.
  2. Použití prohlášení „If-Else“.
  3. Použití prohlášení „If-Elif-Else“.
  4. Použití příkazu „If“ ke kontrole prázdné proměnné
  5. Použití příkazu „If“ s logickým operátorem
  6. Použití vnořených prohlášení „If“.
  7. Použití příkazu „If“ ke kontrole existence souboru
  8. Použití příkazu „If“ ke kontrole existence adresáře
  9. Použití prohlášení „If“ s Regex
  10. Použití prohlášení „Případ“.

Použití prohlášení „Pokud“.

Tento příklad ukazuje jednoduché použití příkazu „if“ v Bash. K porovnání číselných hodnot v Bash lze použít šest typů porovnávacích operátorů. Jsou to „-eq“ (rovná se), „-ne“ (není rovno), „-le“ (menší než rovno), „-ge“ (větší než rovno), „-lt“ (menší než) a „ -gt“ (větší než). Použití „-lt“ a „-eq“ je uvedeno v následujícím skriptu, ať už je číslo menší než 99 nebo nebylo zkontrolováno pomocí operátoru „-lt“. Číslo je sudé nebo liché a je kontrolováno operátorem „-eq“.







#!/bin/bash

#Přiřaďte číselnou hodnotu

( ( číslo = padesáti ) )

#Zkontrolujte číselnou hodnotu pomocí příkazu 'if'

-li [ $číslo -lt 99 ]

pak

echo 'Číslo je platné.'

být

# Zkontrolujte, zda je číslo sudé nebo ne

-li [ $ ( ( $číslo % 2 ) ) -ekv 0 ]

pak

echo 'Číslo je sudé.'

být

Výstup :



Po provedení předchozího skriptu se zobrazí následující výstup:



  p1





Přejít nahoru

Použití prohlášení „If-Else“.

Použití příkazu „if-else“ je znázorněno v následujícím skriptu. Řetězcová hodnota je převzata od uživatele a pomocí příkazu „if-else“ zkontroluje, zda je hodnota „BLUE“ nebo ne.



#!/bin/bash

#Převzít hodnotu řetězce od uživatele

číst -p 'Zadejte svou oblíbenou barvu:' barva

#Zkontrolujte hodnotu řetězce pomocí příkazu 'if-else'

-li [ ${color^^} == 'MODRÝ' ]

pak

echo 'Fajn, modrá barva je k dispozici.'

jiný

echo ' $barva není k dispozici.'

být

Výstup :

Následující výstup se objeví po provedení předchozího skriptu, pokud je jako vstup použito „červené“:

  p2-1

Následující výstup se objeví po provedení předchozího skriptu, pokud je jako vstup použito „modré“:

  p2-2

Přejít nahoru

Použití prohlášení „If-Elif-Else“.

Použití příkazu „if-elif-else“ je znázorněno v následujícím skriptu. Číslo je převzato od uživatele a kontrolováno s různými hodnotami, dokud není nalezena žádná shoda. Pokud je nalezena jakákoliv shoda, vytiskne se odpovídající zpráva. Pokud není nalezena žádná shoda, vytiskne se výchozí zpráva.

#!/bin/bash

#Převzít hodnotu id od uživatele

číst -p 'Zadejte své sériové číslo:' seriál

#Zkontrolujte vstupní hodnotu pomocí příkazu 'if-elif-else'

-li [ $serial == '4523' ]

pak

echo 'Jste vybráni ve skupině A.'

Elif [ $serial == '8723' ]

pak

echo 'Jste vybráni ve skupině B.'

Elif [ $serial == '3412' ]

pak

echo 'Jste vybráni ve skupině C.'

jiný

echo 'Nejste vybráni' .

být

Výstup:

Po provedení skriptu se zobrazí následující výstup s hodnotou 8723:

  p3-1

Po provedení skriptu se zobrazí následující výstup s hodnotou 9078:

  p3-2

Přejít nahoru

Použití příkazu „If“ ke kontrole prázdné proměnné

Způsob kontroly, zda je proměnná prázdná bez použití příkazu „if“, je uveden v následujícím skriptu. K provedení tohoto úkolu se v příkazu „if“ používá volba „-z“.

#!/bin/bash

#Převzít hodnotu id od uživatele

číst -p 'Zadejte své sériové číslo:' seriál

#Zkontrolujte, zda je proměnná prázdná nebo ne

-li [ ! -S $serial ]

pak

#Zkontrolujte vstupní hodnotu pomocí příkazu 'if-elif-else'

-li [ $serial == '690' ]

pak

echo 'Jste vybráni do týmu 1.'

Elif [ $serial == '450' ]

pak

echo 'Jste vybráni do týmu 2.'

jiný

echo 'Nejste vybráni' .

být

jiný

echo 'Není uvedeno žádné sériové číslo.'

být

Výstup :

Po provedení skriptu se zobrazí následující výstup s hodnotou 690:

  p4-1

Pokud není přijata žádná vstupní hodnota, po provedení skriptu se zobrazí následující výstup:

  p4-2

Přejít nahoru

Použití příkazu „If“ s logickými operátory

V podmíněném příkazu Bash lze použít tři typy logických operátorů. Jsou to logické NEBO (||), logické AND (&&) a logické NE (!). Hodnota kódu je převzata od uživatele. Pokud není vstupní hodnota prázdná, je hodnota kontrolována pomocí dvou kódových hodnot pomocí logického OR. Pokud se hodnota shoduje s jakýmkoli kódem, vytiskne se odpovídající zpráva. Pokud není nalezen žádný odpovídající kód, vytiskne se výchozí zpráva.

#!/bin/bash

# Vezměte si kód kurzu od uživatele

číst -p 'Zadejte kód kurzu:' kód

#Zkontrolujte, zda je proměnná prázdná nebo ne

-li [ ! -S $kód ]

pak

#Zkontrolujte vstupní hodnotu pomocí příkazu 'if-elif-else'

-li [ [ $kód == 'CSE-106' || $kód == 'CSE-108' ] ]

pak

echo 'Kurz CSE.'

Elif [ [ $kód == 'BBA-203' || $kód == 'BBA-202' ] ]

pak

echo 'kurz BBA.'

jiný

echo 'Neplatný kód kurzu.'

být

jiný

echo 'Není uveden žádný kód kurzu.'

být

Výstup :

Po provedení skriptu se vstupní hodnotou „CSE-108“ se zobrazí následující výstup:

  p5-1

Po provedení skriptu se vstupní hodnotou „BBA-56“ se zobrazí následující výstup:

  p5-2

Přejít nahoru

Použití vnořených prohlášení „If“.

Když je podmínka „if“ použita v jiné podmínce „if“, nazývá se vnořeným příkazem „if“. Způsob použití vnořeného „if“ je znázorněn v následujícím skriptu. Od uživatele jsou převzaty dvě hodnoty značek. Pokud jsou vstupní hodnoty neprázdné, první podmínka „if“ zkontroluje, zda je hodnota „$theory“ větší nebo rovna 60 nebo ne. Pokud první podmínka „if“ vrátí hodnotu „true“, druhá podmínka „if“ zkontroluje, zda je hodnota „$lab“ větší nebo rovna 50 nebo ne. Pokud druhá podmínka „if“ také vrátí „true“, vytiskne se zpráva o úspěchu. V opačném případě se vytiskne chybové hlášení.

#!/bin/bash

#Vezmi si známku z teorie

číst -p 'Zadejte značku teorie:' teorie

#Vezmi laboratorní značku

číst -p 'Zadejte značku laboratoře:' laboratoř

#Zkontrolujte, zda jsou proměnné prázdné nebo ne

-li [ [ ! -S $teorie && ! -S $lab ] ]

pak

#Zkontrolujte vstupní hodnoty pomocí vnořeného příkazu 'if'

-li [ $teorie -ge 60 ]

pak

-li [ $lab -ge padesáti ]

pak

echo 'Prošel jsi.'

jiný

echo 'Neuspěl jsi.'

být

jiný

echo 'Neuspěl jsi.'

být

jiný

echo 'Teorie nebo laboratorní značka je prázdná.'

být

Výstup :

Pokud jsou obě nebo jedna ze vstupních hodnot prázdná, objeví se následující výstup:

  p6-1

Následující výstup se objeví, pokud je 78 považováno za teoretické známky a 45 je považováno za laboratorní známky. Zde druhá podmínka „if“ vrátí „false“:

  p6-2

Následující výstup se objeví, pokud je 67 považováno za teoretické známky a 56 je považováno za laboratorní známky. Zde obě podmínky „pokud“ vrátí „true“:

  p6-3

Následující výstup se objeví, pokud se 50 vezme jako teoretické známky a 80 jako laboratorní známky. Zde první podmínka „if“ vrátí „false“:

  p6-4

Přejít nahoru

Použití příkazu „If“ ke kontrole existence souboru

Existenci souboru lze zkontrolovat pomocí bash skriptu dvěma způsoby. Jeden používá operátor „-f“ se závorkami „[]“. Další používá příkaz „test“ a operátor „-f“. Vezme se název souboru a zkontroluje existenci souboru pomocí podmínky „if“ s operátorem „-f“. Poté se vezme jiný název souboru a zkontroluje se existence souboru pomocí příkazu „if“ s příkazem „test“ a operátorem „-f“.

#!/bin/bash

#Vezměte název souboru

číst -p 'Zadejte název souboru:' fn1

#Zkontrolujte, zda soubor existuje nebo ne bez použití `test`

-li [ -F $fn1 ]

pak

echo ' $fn1 soubor existuje.'

jiný

echo ' $fn1 soubor neexistuje.'

být

#Přidat nový řádek

echo

#Vezměte jiný název souboru

číst -p 'Zadejte jiný název souboru:' fn2

#Zkontrolujte, zda soubor existuje nebo ne, pomocí `test`

-li test -F $fn2 ; pak

echo ' $fn2 soubor existuje.'

#Zkontrolujte, zda je soubor prázdný nebo ne pomocí `test`

-li test -S $fn2 ; pak

echo ' $fn2 soubor je prázdný.'

jiný

echo ' $fn2 soubor není prázdný.'

být

jiný

echo ' $fn2 soubor neexistuje.'

být

Výstup :

Následující výstup se objeví po spuštění skriptu tak, že jako názvy souborů vezmete „test.txt“ a „testing.txt“. Podle výstupu oba soubory existují v aktuálním umístění a soubor „testing.txt“ je prázdný:

  p7-1

Následující výstup se objeví po spuštění skriptu tak, že jako názvy souborů vezmete „f1.txt“ a „test.txt“. Podle výstupu soubor „f1.txt“ v aktuálním umístění neexistuje a soubor „test.txt“ není prázdný:

  p7-2

Přejít nahoru

Použití příkazu „If“ ke kontrole existence adresáře

Existenci adresáře lze zkontrolovat skriptem Bash dvěma způsoby jako soubor. Jedním z nich je použití operátoru „-d“ se závorkami „[]“. Další používá příkaz „test“ a operátor „-d“. Vezme se název adresáře a zkontroluje existenci adresáře pomocí podmínky „if“ s operátorem „-d“. Poté se vezme jiný název adresáře a zkontroluje se existence souboru pomocí příkazu „if“ s příkazem „test“ a operátorem „-d“.

#!/bin/bash

# Vezměte název adresáře

číst -p 'Zadejte název adresáře:' ty1

#Zkontrolujte, zda adresář existuje nebo ne, bez použití `test`

-li [ -d $dir1 ]

pak

echo ' $dir1 adresář existuje.'

jiný

echo ' $dir1 adresář neexistuje.'

být

#Přidat nový řádek

echo

#Vezměte jiný název adresáře

číst -p 'Zadejte jiný název adresáře:' dir2

#Zkontrolujte, zda soubor existuje nebo ne, pomocí `test`

-li test -d $dir2

pak

echo ' $dir2 adresář existuje.'

jiný

echo ' $dir2 adresář neexistuje.'

být

Výstup :

Následující výstup se objeví po provedení skriptu s názvy adresářů „temp“ a „files“. Podle výstupu oba adresáře existují v aktuálním umístění. Poté se provede příkaz „ls“ pro kontrolu obsahu adresářů:

  p8-1

Následující výstup se objeví po provedení skriptu s názvy adresářů „testing“ a „new“. Podle výstupu oba adresáře v aktuálním umístění neexistují. Poté výstup příkazu „ls“ ukazuje, že oba adresáře neexistují:

  p8-2

Přejít nahoru

Použití prohlášení „If“ s Regex

Následující skript ukazuje metodu ověření vstupních dat pomocí příkazu „if“ s regulárním výrazem. Zde jsou dvě vstupní hodnoty převzaty od uživatele a jsou uloženy v proměnných „$bookname“ a „$bookprice“. Podmínka „if“ se ve skriptu používá ke kontrole, zda proměnná „$bookname“ obsahuje všechny abecední znaky a „$bookprice“ obsahuje číslo.

#!/bin/bash

#Převzít název knihy a cenu od uživatele

echo -n 'Zadejte název knihy:'

číst název knihy

echo -n 'Zadejte cenu knihy:'

číst účetní cena

#Zkontrolujte, zda název knihy obsahuje pouze abecedu

-li ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; pak

echo 'Název knihy je neplatný.'

jiný

echo 'Název knihy je platný.'

být

#Zkontrolujte, zda cena knihy obsahuje pouze číslice

-li ! [ [ ' $ účetní cena ' =~ [ 0 - 9 ] ] ] ; pak

echo 'Cena knihy může obsahovat pouze číslice.'

jiný

echo 'Cena knihy je platná.'

být

Výstup :

Po provedení skriptu se zobrazí následující výstup se vstupními hodnotami „Bash Programming“ jako názvem knihy a 78 jako cenou knihy:

  p9-1

Po provedení skriptu se zobrazí následující výstup se vstupními hodnotami 90 jako názvem knihy a „Bash“ jako cenou knihy:

  p9-2

Přejít nahoru

Použití prohlášení „Případ“.

Příkaz „case“ je alternativou příkazu „if-elif-else“, ale všechny úkoly příkazu „if-elif-else“ nelze provést pomocí příkazu „case“. Jednoduché použití příkazu „case“ ukazuje následující skript. Číselná hodnota je převzata od uživatele jako hodnota aktuálního měsíce. Poté se vytiskne odpovídající měsíc, pokud je ve výpisu „case“ nalezena nějaká odpovídající hodnota. Jinak se vytiskne výchozí zpráva.

#!/bin/bash

# Vezměte aktuální hodnotu měsíce v čísle

číst -p 'Zadejte dnešní měsíc v čísle:' b_měsíc

# Před tiskem názvu měsíce vytiskněte text

echo -n 'Název aktuálního měsíce je'

#Na základě zadání vyhledejte a vytiskněte odpovídající název měsíce

pouzdro $b_měsíc v

1 | 01 ) echo 'Leden.' ;;

2 | 02 ) echo 'Únor.' ;;

3 | 03 ) echo 'Březen.' ;;

4 | 04 ) echo 'Duben.' ;;

5 | 05 ) echo 'Smět.' ;;

6 | 06 ) echo 'Červen.' ;;

7 | 07 ) echo 'Červenec.' ;;

8 | 08 ) echo 'Srpen.' ;;

9 | 09 ) echo 'Září.' ;;

10 ) echo 'Říjen.' ;;

jedenáct ) echo 'Listopad.' ;;

12 ) echo 'Prosinec.' ;;

* ) echo 'nenalezeno.' ;;

esac

Výstup :

Po provedení skriptu se zobrazí následující výstup s hodnotou 6:

  p10-1

Po provedení skriptu se zobrazí následující výstup s hodnotou 09:


  p10-2

Po provedení skriptu se zobrazí následující výstup s hodnotou 14:

  str. 10-3

Přejít nahoru

Závěr

V 10 příkladech tohoto výukového programu jsou uvedena různá použití podmíněné logiky pomocí příkazů „if“ a „case“. Koncept používání podmíněné logiky v Bash bude pro nové uživatele Bash vyjasněn po přečtení tohoto tutoriálu.