Bash Ha-akkor-más példa

Bash If Then Else Example



Ebben a leckében látni fogjuk, hogyan használhatjuk az If-then-Else utasításokat az általunk írt Bash környezeti szkriptekben. Az If-then-Else utasítások hasznos eszköz a szkript cselekvési útvonalának meghatározásához, ha bizonyos feltételek teljesülnek. Lássuk, mi a szintaxisa az If-then-Else utasításoknak:

haNÉHÁNY PARANCS;
azutánAKKOR-PARANCSOK;
másMÁS-PARANCSOK;
lenni

A fenti parancsban, ha a SOME-COMMANDS igaznak bizonyul, vagy visszatérési állapota 0, a THEN-COMMANDS végrehajtásra kerül. Ha ez nem így van, akkor ELSE-COMMANDS kerül végrehajtásra. A NÉHÁNY PARANCSBAN általában String-összehasonlítást vagy érték-összehasonlítást végezünk egész számok formájában. Sok olyan műveletet is elvégezhetünk, amelyek fájlokat tartalmaznak. Nézzünk néhány példát az elsődleges parancsokra, amelyeket főleg fájl alapú feltételek mellett használnak:







Elsődleges Jelentése
[ -nak nek ] Igaz értéket ad vissza, ha létezik FILE.
[-b] Igaz értéket ad vissza, ha a FILE létezik, és blokkolt speciális fájl.
[-c] Igaz értéket ad vissza, ha a FILE létezik, és egy speciális karakterfájl.
[-d] Igaz értéket ad vissza, ha a FILE létezik és könyvtár.
[-És] Igaz értéket ad vissza, ha létezik FILE.
[-f] Igaz értéket ad vissza, ha a FILE létezik, és rendes fájl.
[-g] Igaz értéket ad vissza, ha a FILE létezik és az SGID bitje be van állítva.
[-h] Igaz értéket ad vissza, ha a FILE létezik, és szimbolikus link.
[-k] Igaz értéket ad vissza, ha a FILE létezik és a ragadós bit be van állítva.
[-p] Igaz értéket ad vissza, ha a FILE létezik, és egy elnevezett cső (FIFO).
[-r] Igaz értéket ad vissza, ha a FILE létezik és olvasható.
[-s] Igaz értéket ad vissza, ha a FILE létezik, és mérete nullánál nagyobb.
[-t] Igaz értéket ad vissza, ha az FD fájlleíró nyitva van, és terminálra utal.
[-u] Igaz értéket ad vissza, ha a FILE létezik, és a SUID (felhasználói azonosító beállítása) bit beállítása megtörtént.
[ -ban ben ] Igaz értéket ad vissza, ha a FILE létezik és írható.
[-x] Igaz értéket ad vissza, ha a FILE létezik és végrehajtható.
[-O] Igaz értéket ad vissza, ha a FILE létezik, és a tényleges felhasználói azonosító tulajdonában van.
[-G] Igaz értéket ad vissza, ha a FILE létezik, és a tényleges csoportazonosító tulajdonában van.
[ -AZ ] Igaz értéket ad vissza, ha a FILE létezik, és szimbolikus link.
[-N] Igaz értéket ad vissza, ha a FILE létezik, és az utolsó olvasás óta módosult.
[-S] Igaz értéket ad vissza, ha a FILE létezik, és egy foglalat.

A THEN-COMMANDS és az ELSE-COMMANDS bármilyen érvényes UNIX művelet vagy bármilyen végrehajtható program lehet. Vegye figyelembe, hogy a azután és lenni a parancsokat pontosvessző választja el egymástól, mivel a szkript teljesen különálló elemeinek tekinthetők.



Ha-akkor-más egyszerű példa

Kezdjük a leckét egy nagyon egyszerű példával, ha-akkor-más állításokkal.
Itt egy minta program:



Ha Példa

Ha Példa





Íme a kimenet, amelyet a szkript futtatásakor látunk:

$. ifelse1.sh
Az értékek ugyanazok!
$

Parancssori argumentumok használata

A parancssori argumentumokat is használhatjuk a szkriptjeinkben, és az argumentumok számát és magát az értékeket használhatjuk feltételként az általunk meghatározott IF utasításban. Először definiálunk egy szöveges fájlt a következő tartalommal:



A nevem LinuxHint. Szeretem a szervereket, főleg az Ubuntut. Olyanok
terminális!

Most írhatunk egy szkriptet, amely megállapítja, hogy egy szó előfordul -e egy szövegfájlban vagy sem. Most határozzuk meg a szkriptet:

kidobta '1 dollárt talál 2 dollárban'
markolat $ 1 2 USD
ha [ $? -született 0 ]
azután
kidobta '$ 1 nem található a $ 2 fájlban.'
más
kidobta '$ 1 található a $ 2 fájlban.'
lenni
kidobta - A forgatókönyv elkészült.

Ez a szkript nagyon dinamikus. A parancssorból a keresendő szót és a keresendő fájlt veszi figyelembe. Most készen állunk a szkript futtatására:

. ifelse2.sh szerelem hello.txt

Látni fogunk egy ilyen kimenetet:

A szerelem megtalálásaban benhello.txt
megtalálta a szerelmetban ben fájlthello.txt.
A szkript elkészült.

A parancssori argumentumok számának ellenőrzése

Egy IF utasításon belül még azt is ellenőrizhetjük, hogy hány parancssori argumentumot adtak át a parancsnak, hogy ugyanezt tegyük:

számol=$ #
ha [ ! $ gróf -gt 1 ]
azután
kidobta 'Nincs elég érv'
más
kidobta 'Szép munka!'
lenni

Futtassuk most ezt a szkriptet, a következő kimenetet látjuk:

Parancssori érvek

Parancssori érvek

Ha-akkor-Elif-Else nyilatkozatok

Ugyanazon blokkban több IF utasítás is szerepelhet, hogy szűkítsük a program által hozott döntési utat az általunk meghatározott parancsok végrehajtásához. Íme a szintaxis több IF utasítás meghatározásához a szkriptjeinkben:

haTESZT-PARANCSOK;
azután
EREDMÉNY-PARANCSOK;
elif
MÁS PARANCSOK;
azután
EGYÉB EREDMÉNY-PARANCSOK;
más
ALTERNATE-PARANCSOK;
lenni

Ez elég ismerősnek tűnik, és könnyen követhető is. Adjunk meg egy egyszerű példát a fa működésének megállapításához:

számol=$ #
ha [ $ gróf -eq 1 ]
azután
kidobta - Csak egy érvet találtunk.
elif [ $ gróf -eq 2 ]
azután
kidobta - Jobb, két érvet találtunk.
más
kidobta 'Jó munkát, sok érvet talált!'
lenni

Ezt a parancsot kapjuk vissza:

Ha majd Elif Else példa

Ha majd Elif Else példa

Az esetfeltételek használata

Az IF-ELSE utasítások akkor hasznosak, ha nagy listája van a döntésekről. De ha csak néhány esetben szeretne végrehajtani egy műveletet, ha pontosan egyezik az eredménnyel, akkor a CASE utasításokat is használhatjuk a Bash szkriptekben. Szintaxisa így néz ki:

ügyKIFEJEZÉSban benESET1)VÉGREHAJTÁSI PARANCSOK;
ESET2)VÉGREHAJTÁSI PARANCSOK;
ESET2)VÉGREHAJTÁSI PARANCSOK;
...)VÉGREHAJTÁSI PARANCSOK;
*)VÉGREHAJTÁSI PARANCSOK;
esac

Az utolsó, * -vel jelölt eset alapértelmezett esetként működik, és akkor kerül végrehajtásra, ha a fent meghatározott esetek egyike sem egyezik meg.

Gyorsan készítsünk egy egyszerű példát a CASE utasítások segítségével:

ügy „1 USD” ban ben
1)
kidobta 'Az érték 1.'
;;
2)
kidobta 'Az érték 2.'
;;
3)
kidobta 'Az érték 3.'
;;
*)
kidobta 'Más érték telt el.'
esac

Minden CASE utasítás zárva van ;; (kettős pontosvessző jel). Ezt a parancsot kapjuk vissza:

CASE példa

CASE példa

Következtetés

Ebben a leckében megvizsgáltuk, hogyan használhatjuk az IF-ELSE, IF-THEN-ELIF és CASE utasításokat az általunk definiált Bash-szkriptekben, hogy konkrét műveleteket hajtsunk végre a programjainkban létező vagy a felhasználó által a pozíciós paramétereket.