- Použitie vyhlásenia „If“.
- Použitie vyhlásenia „If-Else“.
- Použitie vyhlásenia „If-Elif-Else“.
- Použitie príkazu „If“ na kontrolu prázdnej premennej
- Použitie príkazu „If“ s logickým operátorom
- Použitie vnorených vyhlásení „If“.
- Použitie príkazu „If“ na kontrolu existencie súboru
- Použitie príkazu „If“ na kontrolu existencie adresára
- Použitie vyhlásenia „If“ s Regex
- Použitie vyhlásenia „Prípad“.
Použitie vyhlásenia „If“.
Tento príklad ukazuje jednoduché použitie príkazu „if“ v Bash. Na porovnanie číselných hodnôt v Bash je možné použiť šesť typov porovnávacích operátorov. Sú to „-eq“ (rovná sa), „-ne“ (nerovná sa), „-le“ (menej ako rovné), „-ge“ (väčšie ako rovné), „-lt“ (menej ako) a „ -gt“ (väčšie ako). Použitie „-lt“ a „-eq“ je zobrazené v nasledujúcom skripte bez ohľadu na to, či je číslo menšie ako 99 alebo nebolo skontrolované pomocou operátora „-lt“. Číslo je párne alebo nepárne a kontroluje ho operátor „-eq“.
#!/bin/bash
#Priraďte číselnú hodnotu
( ( číslo = päťdesiat ) )
#Skontrolujte číselnú hodnotu pomocou príkazu „if“.
ak [ $číslo -lt 99 ]
potom
ozvena 'Číslo je platné.'
byť
#Skontrolujte, či je číslo párne alebo nie
ak [ $ ( ( $číslo % 2 ) ) -ekv 0 ]
potom
ozvena 'Číslo je párne.'
byť
Výkon :
Po vykonaní predchádzajúceho skriptu sa zobrazí nasledujúci výstup:
Použitie vyhlásenia „If-Else“.
Použitie príkazu „if-else“ je znázornené v nasledujúcom skripte. Hodnota reťazca sa prevezme od používateľa a pomocou príkazu „if-else“ skontroluje, či je hodnota „MODRÁ“ alebo nie.
#!/bin/bash
#Zoberte hodnotu reťazca od používateľa
čítať -p 'Zadajte svoju obľúbenú farbu:' farba
#Skontrolujte hodnotu reťazca pomocou príkazu „if-else“.
ak [ ${color^^} == 'MODRÁ' ]
potom
ozvena 'Fajn, modrá farba je k dispozícii.'
inak
ozvena ' $farba nie je k dispozícii.'
byť
Výkon :
Nasledujúci výstup sa zobrazí po vykonaní predchádzajúceho skriptu, ak sa ako vstup použije „červená“:
Nasledujúci výstup sa zobrazí po vykonaní predchádzajúceho skriptu, ak sa ako vstup použije „modrá“:
Použitie vyhlásenia „If-Elif-Else“.
Použitie príkazu „if-elif-else“ je znázornené v nasledujúcom skripte. Od používateľa sa odoberie číslo a skontroluje sa s rôznymi hodnotami, kým sa nenájde žiadna zhoda. Ak sa nájde nejaká zhoda, vytlačí sa príslušná správa. Ak sa nenájde žiadna zhoda, vytlačí sa predvolená správa.
#!/bin/bash#Zoberte hodnotu id od používateľa
čítať -p 'Zadajte svoje sériové číslo:' sériový
#Skontrolujte vstupnú hodnotu pomocou príkazu 'if-elif-else'
ak [ $serial == '4523' ]
potom
ozvena 'Ste vybraní v skupine A.'
Elif [ $serial == '8723' ]
potom
ozvena 'Ste vybraní v skupine B.'
Elif [ $serial == '3412' ]
potom
ozvena 'Ste vybraní v skupine C.'
inak
ozvena 'Nie ste vybraní' .
byť
Výkon:
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 8723:
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 9078:
Použitie príkazu „If“ na kontrolu prázdnej premennej
Spôsob kontroly, či je premenná prázdna bez použitia príkazu „if“, je znázornený v nasledujúcom skripte. Voľba „-z“ sa používa v príkaze „if“ na vykonanie tejto úlohy.
#!/bin/bash#Zoberte hodnotu id od používateľa
čítať -p 'Zadajte svoje sériové číslo:' sériový
#Skontrolujte, či je premenná prázdna alebo nie
ak [ ! - S $serial ]
potom
#Skontrolujte vstupnú hodnotu pomocou príkazu 'if-elif-else'
ak [ $serial == '690' ]
potom
ozvena 'Ste vybraný v tíme-1.'
Elif [ $serial == '450' ]
potom
ozvena 'Ste vybraný v tíme-2.'
inak
ozvena 'Nie ste vybraní' .
byť
inak
ozvena 'Nie je uvedené žiadne sériové číslo.'
byť
Výkon :
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 690:
Ak nie je prijatá žiadna vstupná hodnota, po vykonaní skriptu sa zobrazí nasledujúci výstup:
Použitie príkazu „If“ s logickými operátormi
V podmienenom príkaze Bash možno použiť tri typy logických operátorov. Sú to logické ALEBO (||), logické AND (&&) a logické NIE (!). Hodnota kódu sa získa od používateľa. Ak je vstupná hodnota neprázdna, skontroluje sa pomocou dvoch kódových hodnôt pomocou logického OR. Ak sa hodnota zhoduje s ktorýmkoľvek kódom, vytlačí sa príslušná správa. Ak sa nenájde žiadny zodpovedajúci kód, vytlačí sa predvolená správa.
#!/bin/bash#Zoberte kód kurzu od používateľa
čítať -p 'Zadajte kód kurzu:' kód
#Skontrolujte, či je premenná prázdna alebo nie
ak [ ! - S $code ]
potom
#Skontrolujte vstupnú hodnotu pomocou príkazu 'if-elif-else'
ak [ [ $code == 'CSE-106' || $code == 'CSE-108' ] ]
potom
ozvena 'Kurz CSE.'
Elif [ [ $code == 'BBA-203' || $code == 'BBA-202' ] ]
potom
ozvena 'Kurz BBA.'
inak
ozvena 'Neplatný kód kurzu.'
byť
inak
ozvena 'Nie je uvedený žiadny kód kurzu.'
byť
Výkon :
Po vykonaní skriptu so vstupnou hodnotou „CSE-108“ sa zobrazí nasledujúci výstup:
Po vykonaní skriptu so vstupnou hodnotou „BBA-56“ sa zobrazí nasledujúci výstup:
Použitie vnorených vyhlásení „If“.
Keď sa podmienka „if“ použije v inej podmienke „if“, nazýva sa to vnorený príkaz „if“. Spôsob použitia vnoreného „if“ je znázornený v nasledujúcom skripte. Od používateľa sa prevezmú dve hodnoty značiek. Ak sú vstupné hodnoty neprázdne, prvá podmienka „if“ kontroluje, či je hodnota „$teória“ väčšia alebo rovná 60 alebo nie. Ak prvá podmienka „if“ vráti hodnotu „true“, druhá podmienka „if“ skontroluje, či je hodnota „$lab“ väčšia alebo rovná 50 alebo nie. Ak aj druhá podmienka „if“ vráti hodnotu „true“, vytlačí sa správa o úspechu. V opačnom prípade sa vytlačí chybové hlásenie.
#!/bin/bash#Zoberte si známku z teórie
čítať -p 'Zadajte značku teórie:' teória
#Vezmi laboratórnu značku
čítať -p 'Zadajte laboratórnu značku:' laboratórium
#Skontrolujte, či sú premenné prázdne alebo nie
ak [ [ ! - S $teória && ! - S $lab ] ]
potom
#Skontrolujte vstupné hodnoty pomocou vnoreného príkazu „if“.
ak [ $teória -ge 60 ]
potom
ak [ $lab -ge päťdesiat ]
potom
ozvena 'Prešiel si.'
inak
ozvena 'Zlyhali ste.'
byť
inak
ozvena 'Zlyhali ste.'
byť
inak
ozvena 'Teória alebo laboratórna značka je prázdna.'
byť
Výkon :
Nasledujúci výstup sa zobrazí, ak sú obidve alebo jedna zo vstupných hodnôt prázdna:
Nasledujúci výstup sa zobrazí, ak sa 78 berie ako teoretické známky a 45 sa berie ako laboratórne známky. Tu druhá podmienka „if“ vráti hodnotu „false“:
Nasledujúci výstup sa zobrazí, ak sa 67 berie ako teoretické známky a 56 sa berie ako laboratórne známky. Tu obe podmienky „ak“ vrátia „pravda“:
Nasledujúci výstup sa zobrazí, ak sa 50 berie ako teoretické známky a 80 sa berie ako laboratórne známky. Tu prvá podmienka „if“ vráti hodnotu „false“:
Použitie príkazu „If“ na kontrolu existencie súboru
Existenciu súboru môže bash skript skontrolovať dvoma spôsobmi. Jeden používa operátor „-f“ s hranatými zátvorkami „[]“. Ďalší používa príkaz „test“ a operátor „-f“. Prevezme sa názov súboru a skontroluje existenciu súboru pomocou podmienky „if“ s operátorom „-f“. Potom sa vyberie iný názov súboru a skontroluje sa existencia súboru pomocou príkazu „if“ s príkazom „test“ a operátorom „-f“.
#!/bin/bash#Vezmite názov súboru
čítať -p 'Zadajte názov súboru:' fn1
#Skontrolujte, či súbor existuje alebo nie bez použitia `test`
ak [ -f $fn1 ]
potom
ozvena ' $fn1 súbor existuje.'
inak
ozvena ' $fn1 súbor neexistuje.'
byť
#Pridať nový riadok
ozvena
#Vezmite iný názov súboru
čítať -p 'Zadajte iný názov súboru:' fn2
#Skontrolujte, či súbor existuje alebo nie, pomocou `test`
ak test -f $fn2 ; potom
ozvena ' $fn2 súbor existuje.'
#Skontrolujte, či je súbor prázdny alebo nie pomocou `test`
ak test - S $fn2 ; potom
ozvena ' $fn2 súbor je prázdny.'
inak
ozvena ' $fn2 súbor nie je prázdny.'
byť
inak
ozvena ' $fn2 súbor neexistuje.'
byť
Výkon :
Nasledujúci výstup sa zobrazí po vykonaní skriptu tak, že ako názvy súborov použijete „test.txt“ a „testing.txt“. Podľa výstupu oba súbory existujú v aktuálnom umiestnení a súbor „testing.txt“ je prázdny:
Nasledujúci výstup sa zobrazí po vykonaní skriptu tak, že ako názvy súborov použijete „f1.txt“ a „test.txt“. Podľa výstupu súbor „f1.txt“ neexistuje v aktuálnom umiestnení a súbor „test.txt“ nie je prázdny:
Použitie príkazu „If“ na kontrolu existencie adresára
Existencia adresára môže byť kontrolovaná skriptom Bash dvoma spôsobmi ako súbor. Jeden používa operátor „-d“ so zátvorkami „[]“. Ďalší používa príkaz „test“ a operátor „-d“. Zoberie sa názov adresára a skontroluje sa existencia adresára pomocou podmienky „if“ s operátorom „-d“. Potom sa vyberie iný názov adresára a skontroluje existenciu súboru pomocou príkazu „if“ s príkazom „test“ a operátorom „-d“.
#!/bin/bash#Vezmite názov adresára
čítať -p 'Zadajte názov adresára:' ty1
#Skontrolujte, či adresár existuje alebo nie bez použitia `test`
ak [ -d $dir1 ]
potom
ozvena ' $dir1 adresár existuje.'
inak
ozvena ' $dir1 adresár neexistuje.'
byť
#Pridať nový riadok
ozvena
#Zoberte iný názov adresára
čítať -p 'Zadajte iný názov adresára:' dir2
#Skontrolujte, či súbor existuje alebo nie, pomocou `test`
ak test -d $dir2
potom
ozvena ' $dir2 adresár existuje.'
inak
ozvena ' $dir2 adresár neexistuje.'
byť
Výkon :
Nasledujúci výstup sa zobrazí po vykonaní skriptu s názvami adresárov „temp“ a „files“. Podľa výstupu oba adresáre existujú v aktuálnom umiestnení. Potom sa vykoná príkaz „ls“ na kontrolu obsahu adresárov:
Nasledujúci výstup sa zobrazí po vykonaní skriptu s názvami adresárov „testing“ a „new“. Podľa výstupu oba adresáre v aktuálnom umiestnení neexistujú. Potom výstup príkazu „ls“ ukazuje, že oba adresáre neexistujú:
Použitie vyhlásenia „If“ s Regex
Nasledujúci skript ukazuje metódu overenia vstupných údajov pomocou príkazu „if“ s regulárnym výrazom. Tu sa od používateľa prevezmú dve vstupné hodnoty, ktoré sa uložia do premenných „$bookname“ a „$bookprice“. Podmienka „if“ sa v skripte používa na kontrolu, či premenná „$bookname“ obsahuje všetky abecedné znaky a „$bookprice“ obsahuje číslo.
#!/bin/bash#Zoberte názov knihy a cenu od používateľa
ozvena -n 'Zadajte názov knihy:'
čítať názov knihy
ozvena -n 'Zadajte cenu knihy:'
čítať účtovná cena
#Skontrolujte, či názov knihy obsahuje iba abecedu
ak ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; potom
ozvena 'Názov knihy je neplatný.'
inak
ozvena 'Názov knihy je platný.'
byť
#Skontrolujte, či cena knihy obsahuje iba číslice
ak ! [ [ ' $ účtovná cena ' =~ [ 0 - 9 ] ] ] ; potom
ozvena 'Cena knihy môže obsahovať iba číslice.'
inak
ozvena 'Cena knihy je platná.'
byť
Výkon :
Nasledujúci výstup sa zobrazí po vykonaní skriptu so vstupnými hodnotami „Bash Programming“ ako názvom knihy a 78 ako cenou knihy:
Po vykonaní skriptu sa zobrazí nasledujúci výstup so vstupnými hodnotami 90 ako názvom knihy a „Bash“ ako cenou knihy:
Použitie vyhlásenia „Prípad“.
Príkaz „case“ je alternatívou k príkazu „if-elif-else“, ale všetky úlohy príkazu „if-elif-else“ nemožno vykonať pomocou príkazu „case“. Jednoduché použitie príkazu „case“ je znázornené v nasledujúcom skripte. Číselná hodnota je prevzatá od používateľa ako hodnota aktuálneho mesiaca. Potom sa príslušný mesiac vytlačí, ak sa vo výpise „case“ nájde nejaká zodpovedajúca hodnota. V opačnom prípade sa vytlačí predvolená správa.
#!/bin/bash#Prevezmite hodnotu aktuálneho mesiaca v čísle
čítať -p 'Zadajte dnešný mesiac číslom:' b_mesiac
# Pred tlačou názvu mesiaca vytlačte text
ozvena -n 'Názov aktuálneho mesiaca je'
#Na základe zadania nájdite a vytlačte zodpovedajúci názov mesiaca
prípad $b_mesiac v
1 | 01 ) ozvena 'Január.' ;;
2 | 02 ) ozvena 'Február.' ;;
3 | 03 ) ozvena 'Marec.' ;;
4 | 04 ) ozvena 'Apríl.' ;;
5 | 05 ) ozvena 'Smieť.' ;;
6 | 06 ) ozvena 'Jún.' ;;
7 | 07 ) ozvena 'Júl.' ;;
8 | 08 ) ozvena 'August.' ;;
9 | 09 ) ozvena 'September.' ;;
10 ) ozvena 'Október.' ;;
jedenásť ) ozvena 'November.' ;;
12 ) ozvena 'December.' ;;
* ) ozvena 'nenájdené.' ;;
esac
Výkon :
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 6:
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 09:
Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 14:
Záver
Rôzne použitia podmienenej logiky pomocou príkazov „if“ a „case“ sú uvedené v 10 príkladoch tohto návodu. Koncept používania podmienenej logiky v Bash bude pre nových používateľov Bash vyjasnený po prečítaní tohto návodu.