Ako zvládnuť podmienenú logiku v Bash

Ako Zvladnut Podmienenu Logiku V Bash



Použitie podmienenej logiky je veľmi podstatnou súčasťou každého programovacieho jazyka. Podmienená logika môže byť implementovaná v Bash rôznymi spôsobmi na riešenie problémov s programovaním. Metódy používania podmienenej logiky v Bash prostredníctvom rôznych typov príkazov „if“ a „case“ na porovnanie reťazcov a číselných hodnôt, kontrola obsahu premennej, kontrola existencie súboru alebo adresára atď. sú uvedené v tomto návode. .

Zoznam obsahu:

  1. Použitie vyhlásenia „If“.
  2. Použitie vyhlásenia „If-Else“.
  3. Použitie vyhlásenia „If-Elif-Else“.
  4. Použitie príkazu „If“ na kontrolu prázdnej premennej
  5. Použitie príkazu „If“ s logickým operátorom
  6. Použitie vnorených vyhlásení „If“.
  7. Použitie príkazu „If“ na kontrolu existencie súboru
  8. Použitie príkazu „If“ na kontrolu existencie adresára
  9. Použitie vyhlásenia „If“ s Regex
  10. 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:



  p1





Prejsť na začiatok

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á“:

  p2-1

Nasledujúci výstup sa zobrazí po vykonaní predchádzajúceho skriptu, ak sa ako vstup použije „modrá“:

  p2-2

Prejsť na začiatok

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:

  p3-1

Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 9078:

  p3-2

Prejsť na začiatok

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:

  p4-1

Ak nie je prijatá žiadna vstupná hodnota, po vykonaní skriptu sa zobrazí nasledujúci výstup:

  p4-2

Prejsť na začiatok

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:

  p5-1

Po vykonaní skriptu so vstupnou hodnotou „BBA-56“ sa zobrazí nasledujúci výstup:

  p5-2

Prejsť na začiatok

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:

  p6-1

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“:

  p6-2

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“:

  p6-3

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“:

  p6-4

Prejsť na začiatok

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:

  p7-1

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:

  p7-2

Prejsť na začiatok

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:

  p8-1

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ú:

  p8-2

Prejsť na začiatok

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:

  p9-1

Po vykonaní skriptu sa zobrazí nasledujúci výstup so vstupnými hodnotami 90 ako názvom knihy a „Bash“ ako cenou knihy:

  p9-2

Prejsť na začiatok

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:

  p10-1

Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 09:


  p10-2

Po vykonaní skriptu sa zobrazí nasledujúci výstup s hodnotou 14:

  p10-3

Prejsť na začiatok

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.