A Bash case paranccsal megfelelő intézkedéseket hozhatunk az adatok összehasonlításával, mint például az if utasítás. Úgy működik, mint más szabványos programozási nyelvek váltó-eset kijelentése. Ez a parancs az 'case' utasítással kezdődik, és az 'esac' utasítással zárul. Nem használunk break utasítást az eset parancsban, és a dupla zárójelben (;;) meg kell említeni az utasításokat az adott illesztéshez. Ez a parancs kibontja a kifejezést, és megpróbál egyeztetni a megadott mintával, és a parancs kilépési állapotkódja nulla lesz, ha nem található egyezés. Néhány gyakori példa az esetekre ebben az oktatóanyagban található.
1. példa: egyszerű esetleírás
A bash case parancsban egyetlen feltételes kifejezést használnak a kimenet előállítására az egyező feltétel alapján. Hozzon létre egy bash fájlt eset1.SH a következő bash forgatókönyvvel. A szkript egy string értéket vesz fel, és az értéket minden kifejezéshez illeszti. A következő szkript létrehozza a „Nincs bejegyzés található” lehetőséget, ha nem létezik megfelelő kifejezés,
eset1.SH
echo "Írja be a nevét"
olvassa el a nevet
eset $ név
Igenmin)
visszhang: "Kedvenc színed a kék" ;;
Fahmida)
visszhang "A kedvenc italod a Sprite" ;;
*)
echo "Nincs bejegyzés található" ;;
esac
Futtassa a szkriptet.
$ bash eset.SHKimenet:
A kimenet teszteléséhez a fájl itt érvényes és érvénytelen bemenettel kerül végrehajtásra.
2. példa: többszörös esetmeghatározás csővel
Többféle kifejezés is alkalmazható a bash szkriptben különböző típusú utasítások végrehajtására. A Pipe (|) szimbólum a több kifejezés hozzárendeléséhez használható. Hozzon létre egy bash fájlt eset2.SH a következő forgatókönyvvel. A szkript futtatása után, ha a bemeneti érték megegyezik valamilyen kifejezéssel, akkor a megfelelő szövegérték kinyomtatásra kerül.
eset2.SH
echo "Írja be az azonosító számát"
olvassa el az azonosítót
eset $ ID
65341)
echo "Az Ön pozíciója 1." ;;
97564 | 88453)
visszhang "Az Ön pozíciója 2." ;;
45087)
visszhang "Az Ön pozíciója 3." ;;
*)
echo "Érvénytelen azonosító" ;;
esac
Futtassa a szkriptet .
$ bash eset2.SHKimenet:
Ez a szkript is úgy működik, mint az előző példa. Az egyetlen különbség az, hogy a több kifejezésértéket egyetlen kimenetre tesztelik.
3. példa: Hogyan lehet kilépni a case / esac utasításblokkból
Ha a bash eset parancsot egy végtelen hurok alatt használják, akkor a kilépés parancsot kell használni a hurok befejezéséhez. Ez a példa bemutatja, hogy az ilyen típusú feladatok hogyan hajthatók végre. Hozzon létre egy szöveges fájlt eset3.SH a következő forgatókönyvvel. Ez a szkript bármely számot 1-től 3-ig fog bevinni. Ha a bemenet 1, akkor két számot adunk hozzá, ha a bemenet 2, akkor két számot kivonunk, és ha a bemeneti szám 3, akkor két számot megszorzunk. A kimenet „Érvénytelen bejegyzés” lesz, ha a bemeneti szám több mint 3 vagy kevesebb, mint 1 vagy üres.
eset3.SH
#!/ bin / bash
míg (igaz)
csinálni
a = 8
b = 4
((x = $ a + $ b))
((y = $ a- $ b))
((z = $ a * $ b))
"1. vagy 2. vagy 3. típus" visszhang
olvasni ans
eset $ ans be
1) echo "$ a és $ b összege $ x & exit" ;;
2) echo "A $ a és $ b kivonása $ y & exit" ;;
3) echo "A $ a és $ b szorzata $ z & exit" ;;
*) echo "Érvénytelen bejegyzés"
esac
Kész
Futtassa a szkriptet.
$ bash eset3.SHKimenet:
A parancsfájl addig folytatódik, amíg a ctrl + c billentyűt meg nem nyomja.
4. példa: Az üres parancssori argumentum értékének ellenőrzése
Parancssori argumentumváltozó használható a bash case utasításban. Hozzon létre egy nevű fájlt eset4.SH a következő szkript segítségével, amely ellenőrzi a második argumentum változó értékét.
#!/ bin / bash"$ 2" eset
"Ubuntu")
echo "A második érv $ 2."
;;
"CentOS")
echo "A második érv $ 2."
;;
"")
echo "A második érv üres."
;;
esac
Futtassa a szkriptet.
$ bash eset4.SHKimenet:
Itt a parancsfájl első alkalommal minden második parancssori argumentumérték nélkül kerül végrehajtásra, és a kimenet azt mutatja, hogy „A második argumentum üres”. Amikor a parancsfájl másodszor fut le egy második parancssori argumentumértékkel, akkor a kimenet nem jelenik meg.
5. példa: többszörös esetbemutatás felhasználói bemenet alapján
Hozzon létre egy bash fájlt 5. eset.SH a következő forgatókönyvvel. A szkript a hónap nevét veszi be felhasználói bevitelként. Ha a hónap neve bármilyen esetértékkel egyezik, akkor az Üzenet változóhoz egy adott szöveges üzenet kerül hozzárendelésre. A beviteli értéknek a teljes hónap névnek vagy három karakteres havi névnek kell lennie.
5. eset.SH
#!/ bin / bashecho "Írja be a hónap nevét"
olvasási hónap
eset $ hónap
Január | január *)
Üzenet = "Február 21. a nemzetközi anyák napja."
;;
Február | február *)
Üzenet = "Február 21. a nemzetközi anyák napja."
;;
Március | március *)
Üzenet = "Március 9. a vesék világnapja."
;;
Április | ápr *)
Message = "Az aktuális hónap nem február"
;;
Május | május *)
Message = "Az aktuális hónap február"
;;
Június | június *)
Message = "Az aktuális hónap február"
;;
*)
Message = "Nem található egyező információ"
;;
esac
echo $ Üzenet
Futtassa a szkriptet.
$ bash eset5.SHKimenet:
A következő kimenet jelenik meg a bemeneti értéknél: „március” vagy „március”.
6. példa: Ellenőrizze a változót a bash case utasításban
Bármilyen karakterlánc-érték kinyomtatható a parancssori argumentumváltozó értékének ellenőrzésével. Hozzon létre egy szöveges fájlt 6. eset.SH a következő forgatókönyvvel. Ebben a példában az első argumentum változó értékét ellenőrizzük, és ha az érték üres, akkor egy karakterláncot nyomtatunk.
6. eset.SH
#!/ bin / basheset $ 1 in
("") visszhang "szeretem a bash programozást";
esac
Futtassa a szkriptet.
$ bash eset6.SHKimenet:
Ez a szkript első argumentumokkal és anélkül kerül végrehajtásra. Nem lesz kimenet, ha nem ad át parancssori argumentumváltozót.
Következtetés
A bash case parancs különböző felhasználási módjai bemutatásra kerülnek ebben a cikkben. Ha az olvasók ezeket a példákat megfelelően gyakorolják, akkor könnyebben meg tudnak oldani sok bash programozási problémát.