Príklad Bash If-Then-Else

Bash If Then Else Example



V tejto lekcii uvidíme, ako môžeme použiť príkazy If-Then-Else v skriptoch prostredia Bash, ktoré píšeme. Príkazy If-Then-Else sú užitočným nástrojom, ktorý poskytuje spôsob, ako definovať cestu akcie skriptu pri splnení niektorých podmienok. Pozrime sa, aká je syntax pre príkazy If-Then-Else:

kebyNIEKTORÉ PRÍKAZY;
potomPOTOM PRÍKAZY;
inakINÉ PRÍKAZY;
byť

Ak je vo vyššie uvedenom príkaze zistené, že NIEKTORÉ PRÍKAZY sú pravdivé alebo ak je jeho návratový stav 0, vykonajú sa POTOM PRÍKAZY. Ak to tak nie je, vykonajú sa INÉ PRÍKAZY. V NIEKTORÝCH PRÍKAZOCH zvyčajne robíme porovnanie reťazcov alebo porovnanie hodnôt vo forme celých čísel. Môžeme tiež vykonať veľa operácií, ktoré zahŕňajú súbory. Pozrime sa na niekoľko príkladov primárnych príkazov, ktoré sa používajú hlavne pri práci s podmienkami založenými na súboroch:







Primárny Význam
[-to] Vráti hodnotu true, ak existuje FILE.
[-b] Vráti hodnotu true, ak FILE existuje a je to špeciálny súbor bloku.
[-c] Vráti hodnotu true, ak FILE existuje a je to špeciálny súbor znakov.
[-d] Vráti hodnotu true, ak FILE existuje a je adresárom.
[-A] Vráti hodnotu true, ak existuje FILE.
[-f] Vráti hodnotu true, ak FILE existuje a je to bežný súbor.
[-g] Vráti hodnotu true, ak existuje FILE a je nastavený jeho bit SGID.
[-h] Vráti hodnotu true, ak FILE existuje a predstavuje symbolický odkaz.
[-K] Vráti hodnotu true, ak FILE existuje a je nastavený lepivý bit.
[-p] Vráti hodnotu true, ak FILE existuje a je pomenovaný kanál (FIFO).
[-r] Vráti hodnotu true, ak FILE existuje a je čitateľný.
[-s] Vráti hodnotu true, ak FILE existuje a má veľkosť väčšiu ako nula.
[-t] Vráti hodnotu true, ak je deskriptor súboru FD otvorený a odkazuje na terminál.
[-u] Vráti hodnotu true, ak FILE existuje a je nastavený jeho bit SUID (set user ID).
[-in] Vráti hodnotu true, ak FILE existuje a je zapisovateľný.
[-X] Vráti hodnotu true, ak FILE existuje a je spustiteľný.
[-O] Vráti hodnotu true, ak FILE existuje a je vo vlastníctve skutočného ID používateľa.
[-G] Vráti hodnotu true, ak FILE existuje a je vo vlastníctve efektívneho ID skupiny.
[-THE] Vráti hodnotu true, ak FILE existuje a predstavuje symbolický odkaz.
[-N] Vráti hodnotu true, ak FILE existuje a bol zmenený od posledného čítania.
[-S] Vráti hodnotu true, ak FILE existuje a je soket.

THEN-COMMANDS a ELSE-COMMANDS môžu byť akékoľvek platné operácie UNIX alebo ľubovoľný spustiteľný program. Všimnite si, že potom a byť príkazy sú oddelené bodkočiarkou, pretože sú považované za úplne oddelené prvky skriptu.



If-Then-Else Jednoduchý príklad

Začnime svoju lekciu veľmi jednoduchým príkladom s príkazmi If-Then-Else.
Tu je ukážkový program:



Ak Príklad

Ak Príklad





Tu je výstup, ktorý vidíme pri spustení nášho skriptu:

$. ifelse1.sh
Hodnoty sú rovnaké!
$

Použitie argumentov príkazového riadka

V našich skriptoch môžeme tiež použiť argumenty príkazového riadka a počet argumentov a samotné hodnoty použiť ako podmienku v príkaze IF, ktorý definujeme. Najprv definujeme textový súbor s nasledujúcim obsahom:



Moje meno je LinuxHint. Milujem servery, najmä tie Ubuntu. Sú takí
terminálny!

Teraz môžeme napísať skript, ktorý zistí, či sa slovo nachádza v textovom súbore alebo nie. Teraz definujme skript:

zahodil „Nájdenie 1 dolára za 2 doláre“
uchopenie 1 dolár 2 doláre
keby [ $? -narodený 0 ]
potom
zahodil „$ 1 sa nenašiel v súbore $ 2.“
inak
zahodil „V súbore $ 2 sa našiel $ 1.“
byť
zahodil 'Skript je dokončený.'

Tento skript je veľmi dynamický. Považuje slovo za nájdené a súbor, ktorý sa má vyhľadať, z príkazového riadka samotného. Teraz sme pripravení spustiť náš skript:

. ifelse2.sh láska ahoj.txt

Uvidíme výstup ako:

Nájdenie láskyvahoj.txt
láska nájdenáv súborahoj.txt.
Skript dokončený.

Kontroluje sa počet argumentov príkazového riadka

V príkaze IF môžeme dokonca skontrolovať, koľko argumentov príkazového riadka bolo odoslaných príkazu, aby sme mohli konať rovnako:

počítať=$ #
keby [ ! počet dolárov -gt 1 ]
potom
zahodil „Nedostatok argumentov“
inak
zahodil 'Dobrá práca!'
byť

Spustíme tento skript teraz, uvidíme nasledujúci výstup:

Argumenty príkazového riadka

Argumenty príkazového riadka

Vyhlásenia if-Then-Elif-Else

Môžeme mať aj viacero príkazov IF v tom istom bloku, aby sme zúžili rozhodovaciu cestu, ktorou náš program prejde na vykonanie príkazov, ktoré sme definovali. Tu je syntax na definovanie viacerých príkazov IF v našich skriptoch:

kebySKÚŠOBNÉ PRÍKAZY;
potom
VÝSLEDKY-POVELY;
elif
ĎALŠIE PRÍKAZY;
potom
INÉ VÝSLEDKY-POVELY;
inak
ALTERNATÍVNE PRÍKAZY;
byť

Zdá sa to však celkom známe a ľahko sa to sleduje. Definujme jednoduchý príklad, aby sme zistili, ako strom funguje:

počítať=$ #
keby [ počet dolárov -ekv 1 ]
potom
zahodil 'Bol nájdený iba jeden argument.'
elif [ počet dolárov -ekv 2 ]
potom
zahodil „Lepšie sú nájdené dva argumenty.“
inak
zahodil „Dobrá práca, našlo sa veľa argumentov!“
byť

Tu je to, čo sa nám vráti pomocou tohto príkazu:

Ak Potom Príklad Elif Else

Ak Potom Príklad Elif Else

Použitie prípadových stojanov

Výpisy IF-ELSE sú užitočné, ak máte veľký zoznam možností, pre ktoré sa musíte rozhodnúť. Ale v prípade, že chcete vykonať akciu iba v niekoľkých prípadoch s presnou zhodou s výsledkom, môžeme použiť príkazy CASE aj v Bash skriptoch. Jeho syntax vyzerá takto:

prípadVYJADRENIEvPRÍPAD 1)PRÍKAZY NA VÝKON;
PRÍPAD 2)PRÍKAZY NA VÝKON;
PRÍPAD 2)PRÍKAZY NA VÝKON;
...)PRÍKAZY NA VÝKON;
*)PRÍKAZY NA VÝKON;
esac

Posledný prípad s * funguje ako predvolený prípad a bude vykonaný, ak sa nezistí, že sa zhoduje žiadny z vyššie definovaných prípadov.

Poďme rýchlo zostaviť jednoduchý príklad pomocou príkazov CASE:

prípad '1 $' v
1)
zahodil „Hodnota je 1.“
;;
2)
zahodil „Hodnota je 2.“
;;
3)
zahodil „Hodnota je 3.“
;;
*)
zahodil 'Prešla iná hodnota.'
esac

Každý príkaz CASE je ukončený; (dvojité bodkočiarkové značky). Tu je to, čo sa nám vráti pomocou tohto príkazu:

PRÍPADOVÝ príklad

PRÍPADOVÝ príklad

Záver

V tejto lekcii sme sa pozreli na to, ako môžeme použiť príkazy IF-ELSE, IF-THEN-ELIF a CASE v skriptoch Bash, ktoré definujeme, na vykonanie konkrétnych akcií na základe hodnôt, ktoré existujú v našich programoch alebo ich používateľ odovzdal pomocou pozičných parametre.