Ebben a témában megvitatjuk az esetleírások alapjait és azok használatát Bash-szkriptekben.
A Bash eset utasítás az IF-THEN-ELSE legegyszerűbb formája sok ELIF elemmel. A case utasítás használatával a bash szkriptünk olvashatóbbá és könnyebben karbantarthatóvá válik. Ezeket általában arra használják, hogy egyszerűsítsék a több különböző választási lehetőséget tartalmazó összetett feltételeket.
A Bash case utasítás hasonló logikát követ, mint a Javascript vagy a C switch utasítás. Van egy kis eltérés, az alábbiak szerint:
- A Bash eset utasítás egyszer vesz fel egy értéket, és többször teszteli azt. Abbahagyja a minta keresését, miután megtalálta és végrehajtotta a hozzá kapcsolt utasítást, ami a C switch utasítás esetében szinte ellentétes.
Esetkimutatás szintaxis
A bash kis- és nagybetűk utasításának szintaxisa az alábbiakban látható:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Van néhány kulcsfontosságú pont a bash kisbetűs kijelentéseknek:
- A bash-ban minden eset-utasítás a „case” kulcsszóval kezdődik, ezt követi a case kifejezés és az „in” kulcsszó. Az esetleírást az „esac” kulcsszó zárja.
- Több mintát is alkalmazhatunk |-vel elválasztva operátor. A ) operátor egy mintalista befejezését jelzi.
- Az utasításokat tartalmazó mintát záradéknak nevezzük, és dupla pontosvesszővel (;;) kell zárni.
- A csillag szimbólum (*) végső mintaként szolgál az alapértelmezett kis- és nagybetűk meghatározásához. Ez alapértelmezett esetként használatos, ha utolsó esetként használják.
Hogyan működik
Először is, a case utasítás kibővíti a kifejezést, és megpróbál illeszkedni az egyes mintákkal. Ha egyezést talál, az összes csatolt utasítás a kettős pontosvesszőig (;;) fut le. Az első egyezés után az ügy az utoljára végrehajtott utasítás kilépési állapotával fejeződik be.
Ha nincs egyező minta, akkor az eset kilépési állapota nulla. Ellenkező esetben a visszatérési állapot a végrehajtott utasítások kilépési állapota.
Ha az alapértelmezett csillagmintát használja, akkor a rendszer végrehajtja, ha nincs egyező minta.
Próbáljuk megérteni ezt a mechanizmust néhány példa segítségével:
1. példa
Ebben a példában egy egyszerű forgatókönyvet definiáltunk az eset utasítás használatának bemutatására.
Bash Script
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
Kimenet
2. példa
Ebben a példában egy kombinált forgatókönyvet definiáltunk, ahol van egy alapértelmezett eset is, amikor nem található korábbi egyező eset.
jsp javatpoint
Bash Script
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
Kimenet
A szkriptet három különböző bemenettel futtattuk, nézze meg az alábbi kimenetet: