- Použití prohlášení „Pokud“.
- Použití prohlášení „If-Else“.
- Použití prohlášení „If-Elif-Else“.
- Použití příkazu „If“ ke kontrole prázdné proměnné
- Použití příkazu „If“ s logickým operátorem
- Použití vnořených prohlášení „If“.
- Použití příkazu „If“ ke kontrole existence souboru
- Použití příkazu „If“ ke kontrole existence adresáře
- Použití prohlášení „If“ s Regex
- 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:
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é“:
Následující výstup se objeví po provedení předchozího skriptu, pokud je jako vstup použito „modré“:
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:
Po provedení skriptu se zobrazí následující výstup s hodnotou 9078:
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:
Pokud není přijata žádná vstupní hodnota, po provedení skriptu se zobrazí následující výstup:
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:
Po provedení skriptu se vstupní hodnotou „BBA-56“ se zobrazí následující výstup:
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:
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“:
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“:
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“:
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ý:
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ý:
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ářů:
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í:
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:
Po provedení skriptu se zobrazí následující výstup se vstupními hodnotami 90 jako názvem knihy a „Bash“ jako cenou knihy:
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:
Po provedení skriptu se zobrazí následující výstup s hodnotou 09:
Po provedení skriptu se zobrazí následující výstup s hodnotou 14:
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.