Hogyan lehet elsajátítani a feltételes logikát a Bashban

Hogyan Lehet Elsajatitani A Felteteles Logikat A Bashban



A feltételes logika használata nagyon lényeges része minden programozási nyelvnek. A feltételes logika többféleképpen is megvalósítható a Bashban a programozási problémák megoldására. Ebben az oktatóanyagban bemutatjuk a Bash feltételes logikájának használatának módszereit a különböző típusú „if” és „case” utasításokon keresztül a karakterlánc és a numerikus értékek összehasonlítására, a változó tartalmának ellenőrzésére, a fájl vagy könyvtár létezésének ellenőrzésére stb. .

Tartalomlista:

  1. Az „Ha” nyilatkozat használata
  2. Az „If-Else” nyilatkozat használata
  3. Az „If-Elif-Else” nyilatkozat használata
  4. Az „If” utasítás használata üres változó ellenőrzésére
  5. Az „If” utasítás használata logikai operátorral
  6. A beágyazott „Ha” utasítások használata
  7. Az „If” utasítás használata a fájl létezésének ellenőrzésére
  8. Az „If” utasítás használata a címtár meglétének ellenőrzésére
  9. Az „Ha” nyilatkozat használata a Regex-szel
  10. Az „eset” nyilatkozat használata

Az „Ha” nyilatkozat használata

Ez a példa az „if” utasítás egyszerű használatát mutatja be a Bash-ban. Hatféle összehasonlító operátor használható a Bash számértékeinek összehasonlítására. Ezek a következők: „-eq” (egyenlő), „-ne” (nem egyenlő), „-le” (kisebb, mint egyenlő), „-ge” (nagyobb, mint egyenlő), „-lt” (kisebb, mint) és „ -gt” (nagyobb, mint). A „-lt” és „-eq” használata a következő szkriptben látható, függetlenül attól, hogy a szám kisebb-e, mint 99, vagy nem ellenőrizték az „-lt” operátorral. A szám páros vagy páratlan, és a „-eq” operátor ellenőrzi.







#!/bin/bash

#Numerikus érték hozzárendelése

( ( szám = ötven ) )

#Ellenőrizze a számértéket az „if” utasítással

ha [ $szám -lt 99 ]

akkor

visszhang – A szám érvényes.

lenni

#Ellenőrizze, hogy a szám páros-e vagy sem

ha [ $ ( ( $szám % 2 ) ) -eq 0 ]

akkor

visszhang – A szám páros.

lenni

Kimenet :



Az előző szkript végrehajtása után a következő kimenet jelenik meg:



  p1





Ugrás a tetejére

Az „If-Else” nyilatkozat használata

Az „if-else” utasítás használatát a következő szkript mutatja be. A rendszer egy karakterlánc-értéket vesz a felhasználótól, és az „if-else” utasítás használatával ellenőrzi, hogy az érték „KÉK”-e vagy sem.



#!/bin/bash

#Vegyél el egy karakterlánc értéket a felhasználótól

olvas -o 'Adja meg kedvenc színét:' szín

#Ellenőrizze a karakterlánc értékét az „if-else” utasítással

ha [ ${color^^} == 'KÉK' ]

akkor

visszhang 'Rendben, kék szín is elérhető.'

más

visszhang ' $szín nem elérhető.'

lenni

Kimenet :

A következő kimenet jelenik meg az előző szkript végrehajtása után, ha a „piros” bemenetet veszi:

  p2-1

A következő kimenet jelenik meg az előző szkript végrehajtása után, ha a „kék” bemenetet veszi:

  p2-2

Ugrás a tetejére

Az „If-Elif-Else” nyilatkozat használata

Az „if-elif-else” utasítás használatát a következő szkript mutatja be. A rendszer egy számot vesz a felhasználótól, és a különböző értékekkel ellenőrzi, amíg egyezést nem talál. Ha talál egyezést, a rendszer kinyomtatja a megfelelő üzenetet. Ha nem található egyezés, a rendszer az alapértelmezett üzenetet nyomtatja ki.

#!/bin/bash

#Vegye el az id értéket a felhasználótól

olvas -o 'Adja meg sorozatszámát:' sorozatszám

#Ellenőrizze a bemeneti értéket az „if-elif-else” utasítással

ha [ $soros == '4523' ]

akkor

visszhang 'Az A csoportba választották.'

Elif [ $soros == '8723' ]

akkor

visszhang 'Ön a B csoportba került kiválasztásra.'

Elif [ $soros == '3412' ]

akkor

visszhang 'Ön a C csoportba került kiválasztásra.'

más

visszhang 'Nem vagy kiválasztott' .

lenni

Kimenet:

A következő kimenet jelenik meg a 8723 értékű szkript végrehajtása után:

  p3-1

A következő kimenet jelenik meg a 9078 értékű szkript végrehajtása után:

  p3-2

Ugrás a tetejére

Az „If” utasítás használata üres változó ellenőrzésére

A következő szkriptben látható a módszer annak ellenőrzésére, hogy egy változó üres-e „if” utasítás nélkül. A „-z” opciót az „if” utasításban használják ennek a feladatnak a végrehajtásához.

#!/bin/bash

#Vegye el az id értéket a felhasználótól

olvas -o 'Adja meg sorozatszámát:' sorozatszám

#Ellenőrizze, hogy a változó üres-e vagy sem

ha [ ! -Val vel $soros ]

akkor

#Ellenőrizze a bemeneti értéket az „if-elif-else” utasítással

ha [ $soros == '690' ]

akkor

visszhang 'Ön az 1-es csapatban kiválasztott.'

Elif [ $soros == '450' ]

akkor

visszhang 'Téged a 2-es csapatba választottak.'

más

visszhang 'Nem vagy kiválasztott' .

lenni

más

visszhang – Nincs megadva sorozatszám.

lenni

Kimenet :

A következő kimenet jelenik meg a 690 értékű szkript végrehajtása után:

  p4-1

A következő kimenet jelenik meg a szkript végrehajtása után, ha nincs bemeneti érték:

  p4-2

Ugrás a tetejére

Az „If” utasítás használata logikai operátorokkal

A Bash feltételes utasításban háromféle logikai operátor használható. Ezek logikai VAGY (||), logikai ÉS (&&) és logikai NEM (!). A kód értéket a felhasználótól veszik. Ha a bemeneti érték nem üres, akkor a rendszer két kódértékkel ellenőrzi az értéket logikai VAGY használatával. Ha az érték bármely kóddal megegyezik, a megfelelő üzenet kinyomtatásra kerül. Ha nem található megfelelő kód, a rendszer az alapértelmezett üzenetet nyomtatja ki.

#!/bin/bash

#Vegye el a kurzuskódot a felhasználótól

olvas -o 'Írja be a tanfolyam kódját:' kód

#Ellenőrizze, hogy a változó üres-e vagy sem

ha [ ! -Val vel $kód ]

akkor

#Ellenőrizze a bemeneti értéket az „if-elif-else” utasítással

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

akkor

visszhang 'CSE tanfolyam.'

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

akkor

visszhang – BBA tanfolyam.

más

visszhang 'Érvénytelen kurzuskód.'

lenni

más

visszhang 'Nincs kurzuskód megadva.'

lenni

Kimenet :

A következő kimenet jelenik meg a „CSE-108” bemeneti értékű szkript végrehajtása után:

  p5-1

A következő kimenet jelenik meg a „BBA-56” bemeneti értékkel rendelkező szkript végrehajtása után:

  p5-2

Ugrás a tetejére

A beágyazott „Ha” utasítások használata

Ha egy „if” feltételt egy másik „if” feltételen belül használunk, azt beágyazott „if” utasításnak nevezzük. A beágyazott „if” használatának módja a következő szkriptben látható. Két jelölési értéket veszünk a felhasználótól. Ha a bemeneti értékek nem üresek, az első „if” feltétel azt ellenőrzi, hogy a „$theory” értéke nagyobb-e vagy egyenlő-e 60-nál vagy sem. Ha az első „if” feltétel „igaz” értékkel tér vissza, a második „if” feltétel ellenőrzi, hogy a „$lab” értéke nagyobb-e vagy egyenlő-e 50-el vagy sem. Ha a második „ha” feltétel is „igaz”-t ad vissza, a rendszer sikeres üzenetet nyomtat. Ellenkező esetben hibaüzenet kerül kinyomtatásra.

#!/bin/bash

#Vegye fel az elméleti jegyet

olvas -o 'Írja be az elméleti jelet:' elmélet

#Vedd le a laborjelet

olvas -o 'Írja be a laborjelet:' labor

#Ellenőrizze, hogy a változók üresek-e vagy sem

ha [ [ ! -Val vel $elmélet && ! -Val vel $lab ] ]

akkor

#Ellenőrizze a bemeneti értékeket egy beágyazott „if” utasítással

ha [ $elmélet -ge 60 ]

akkor

ha [ $lab -ge ötven ]

akkor

visszhang – Átmentél.

más

visszhang – Elbuktál.

lenni

más

visszhang – Elbuktál.

lenni

más

visszhang 'Az elmélet vagy a laborjegy üres.'

lenni

Kimenet :

A következő kimenet jelenik meg, ha mindkét vagy az egyik bemeneti érték üres:

  p6-1

A következő kimenet jelenik meg, ha a 78-at elméleti jegynek, a 45-öt pedig laboratóriumi jegynek vesszük. Itt a második „ha” feltétel „false”-t ad vissza:

  p6-2

A következő kimenet jelenik meg, ha a 67-et elméleti jegynek, az 56-ot pedig laborjegynek vesszük. Itt mindkét „ha” feltétel „igaz” értéket ad vissza:

  p6-3

A következő kimenet jelenik meg, ha az 50-et elméleti jegynek, a 80-ast pedig laboratóriumi jegynek vesszük. Itt az első „if” feltétel „false”-t ad vissza:

  p6-4

Ugrás a tetejére

Az „If” utasítás használata a fájl létezésének ellenőrzésére

A fájl létezését a bash szkript kétféleképpen tudja ellenőrizni. Az egyik a „-f” operátor használata „[]” zárójelekkel. Egy másik a „teszt” parancsot és az „-f” operátort használja. A rendszer egy fájlnevet vesz, és ellenőrzi a fájl létezését az „if” feltétel használatával, a „-f” operátorral. Ezután egy másik fájlnevet veszünk, és ellenőrizzük a fájl létezését az „if” utasítással a „test” paranccsal és a „-f” operátorral.

#!/bin/bash

#Vegye fel a fájlnevet

olvas -o 'Adjon meg egy fájlnevet:' fn1

#Ellenőrizze, hogy a fájl létezik-e vagy sem, a 'teszt' használata nélkül

ha [ -f $fn1 ]

akkor

visszhang ' $fn1 A fájl létezik.'

más

visszhang ' $fn1 a fájl nem létezik.'

lenni

#Újsor hozzáadása

visszhang

#Vegyél másik fájlnevet

olvas -o 'Adjon meg egy másik fájlnevet:' fn2

#Ellenőrizze, hogy a fájl létezik-e vagy sem, használja a 'teszt' parancsot

ha teszt -f $fn2 ; akkor

visszhang ' $fn2 A fájl létezik.'

#Ellenőrizze, hogy a fájl üres-e vagy sem, használja a 'teszt' parancsot

ha teszt -Val vel $fn2 ; akkor

visszhang ' $fn2 a fájl üres.'

más

visszhang ' $fn2 a fájl nem üres.'

lenni

más

visszhang ' $fn2 a fájl nem létezik.'

lenni

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után, a „test.txt” és a „testing.txt” fájlnévként. A kimenet szerint mindkét fájl létezik az aktuális helyen, és a „testing.txt” fájl üres:

  p7-1

A következő kimenet jelenik meg a szkript végrehajtása után, az „f1.txt” és a „test.txt” fájlnévként. A kimenet szerint az „f1.txt” fájl nem létezik az aktuális helyen, és a „test.txt” fájl nem üres:

  p7-2

Ugrás a tetejére

Az „If” utasítás használata a címtár meglétének ellenőrzésére

A könyvtár létezését a Bash szkript kétféleképpen tudja ellenőrizni, mint a fájl. Az egyik a „-d” operátor használata „[]” zárójelekkel. Egy másik a „test” parancs és a „-d” operátor használata. Felvesz egy könyvtárnevet, és ellenőrzi a könyvtár létezését az „if” feltétel használatával a „-d” operátorral. Ezután a program egy másik könyvtárnevet vesz fel, és ellenőrzi a fájl létezését az „if” utasítással a „test” paranccsal és a „-d” operátorral.

#!/bin/bash

#Vegyél egy könyvtárnevet

olvas -o 'Adjon meg egy könyvtárnevet:' te 1

#Ellenőrizze, hogy a könyvtár létezik-e a `teszt` használata nélkül

ha [ -d $dir1 ]

akkor

visszhang ' $dir1 könyvtár létezik.'

más

visszhang ' $dir1 könyvtár nem létezik.'

lenni

#Újsor hozzáadása

visszhang

#Vegyél másik könyvtárnevet

olvas -o 'Adjon meg egy másik könyvtárnevet:' dir2

#Ellenőrizze, hogy a fájl létezik-e vagy sem, használja a 'teszt' parancsot

ha teszt -d $dir2

akkor

visszhang ' $dir2 könyvtár létezik.'

más

visszhang ' $dir2 könyvtár nem létezik.'

lenni

Kimenet :

A következő kimenet jelenik meg a parancsfájl végrehajtása után a „temp” és a „files” könyvtárnevekkel. A kimenet szerint mindkét könyvtár létezik az aktuális helyen. Ezután az „ls” parancs végrehajtásra kerül a könyvtárak tartalmának ellenőrzéséhez:

  p8-1

A következő kimenet jelenik meg a szkript végrehajtása után a „testing” és „new” könyvtárnevekkel. A kimenet szerint mindkét könyvtár nem létezik az aktuális helyen. Ezután az „ls” parancs kimenete azt mutatja, hogy mindkét könyvtár nem létezik:

  p8-2

Ugrás a tetejére

Az „Ha” nyilatkozat használata a Regex-szel

A következő szkript bemutatja a bemeneti adatok érvényesítésének módját egy „if” utasítással a reguláris kifejezéssel. Itt két bemeneti értéket vesz a felhasználó, és a „$bookname” és a „$bookprice” változók tárolják. Az „if” feltétel a szkriptben annak ellenőrzésére szolgál, hogy a „$bookname” változó tartalmazza-e az összes alfabetikus karaktert, a „$bookprice” pedig egy számot.

#!/bin/bash

#Vegye el a könyv nevét és árát a felhasználótól

visszhang -n 'Írja be a könyv nevét:'

olvas könyvnév

visszhang -n 'Adja meg a könyv árát:'

olvas könyvár

#Ellenőrizze, hogy a könyv neve csak az ábécét tartalmazza

ha ! [ [ ' $könyvnév ' =~ [ A-Za-z ] ] ] ; akkor

visszhang 'A könyv neve érvénytelen.'

más

visszhang 'A könyv neve érvényes.'

lenni

#Ellenőrizze, hogy a könyv ára csak számjegyeket tartalmaz

ha ! [ [ ' $ könyvár ' =~ [ 0 - 9 ] ] ] ; akkor

visszhang 'A könyv ára csak számjegyet tartalmazhat.'

más

visszhang 'A könyv ára érvényes.'

lenni

Kimenet :

A következő kimenet jelenik meg a szkript végrehajtása után a „Bash Programming” bemeneti értékekkel könyvnévként és 78-mal a könyv áraként:

  9-1

A következő kimenet jelenik meg a szkript végrehajtása után, 90-es bemeneti értékkel a könyv neveként és „Bash” értékkel a könyv áraként:

  9-2

Ugrás a tetejére

Az „eset” nyilatkozat használata

A „case” utasítás az „if-elif-else” utasítás alternatívája, de az „if-elif-else” utasítás összes feladata nem végezhető el a „case” utasítás használatával. A „case” utasítás egyszerű használatát a következő szkript mutatja be. A rendszer egy számértéket vesz a felhasználótól az aktuális hónap értékeként. Ezután a rendszer kinyomtatja a megfelelő hónapot, ha talál egyező értéket a „case” utasításban. Ellenkező esetben az alapértelmezett üzenet kerül kinyomtatásra.

#!/bin/bash

#Vegye számba az aktuális hónap értékét

olvas -o 'Írja be a mai hónapot számban:' b_hónap

#Nyomtassa ki a szöveget a hónap nevének kinyomtatása előtt

visszhang -n 'Az aktuális hónap neve'

#A bevitt adatok alapján találja meg és nyomtassa ki a megfelelő hónapnevet

ügy $b_hónap ban ben

1 | 01 ) visszhang 'Január.' ;;

2 | 02 ) visszhang 'Február.' ;;

3 | 03 ) visszhang 'Március.' ;;

4 | 04 ) visszhang 'Április.' ;;

5 | 05 ) visszhang 'Lehet.' ;;

6 | 06 ) visszhang 'Június.' ;;

7 | 07 ) visszhang 'Július.' ;;

8 | 08 ) visszhang 'Augusztus.' ;;

9 | 09 ) visszhang 'Szeptember.' ;;

10 ) visszhang 'Október.' ;;

tizenegy ) visszhang 'November.' ;;

12 ) visszhang 'December.' ;;

* ) visszhang 'nem található.' ;;

esac

Kimenet :

A következő kimenet jelenik meg a 6-os értékű szkript végrehajtása után:

  p10-1

A következő kimenet jelenik meg a 09 értékű szkript végrehajtása után:


  p10-2

A következő kimenet jelenik meg a 14-es értékű szkript végrehajtása után:

  p10-3

Ugrás a tetejére

Következtetés

A feltételes logika „if” és „case” utasításokat használó különböző felhasználási módjai az oktatóanyag 10 példájában láthatók. Az oktatóanyag elolvasása után az új Bash-felhasználók számára a feltételes logika használatának fogalma a Bashban törlődik.