Bash If-then-Else näide

Bash If Then Else Example



Selles õppetükis näeme, kuidas saame kasutada If-then-Else avaldusi meie kirjutatud Bashi keskkonna skriptides. Kui-siis-muud laused on kasulik tööriist skripti toimimisviisi määratlemiseks, kui teatud tingimused on täidetud. Vaatame, milline on If-then-Else lausete süntaks:

kuiMÕNED KÄSUD;
siisSIIS-KÄSKUD;
muiduMUUD KÄSKUD;
olla

Kui ülaltoodud käsklusel leitakse, et MÕNED KÄSUD on tõesed või kui nende tagasisaatmise olek on 0, täidetakse THEN-COMMANDS. Kui see nii ei ole, täidetakse ELSE-KÄSKUD. Mõnes käsus teeme tavaliselt mõne stringi võrdluse või väärtuste võrdluse täisarvude kujul. Samuti saame teha palju toiminguid, mis hõlmavad faile. Vaatame mõningaid näiteid esmaste käskude kohta, mida kasutatakse peamiselt failipõhiste tingimustega töötamisel:







Esmane Tähendus
[ -] Tagastab tõese, kui FILE on olemas.
[-b] Tagastab tõese, kui FILE on olemas ja on blokeeritav erifail.
[-c] Tagastab tõese, kui FILE on olemas ja on tähemärkide erifail.
[-d] Tagastab tõese, kui FILE on olemas ja on kataloog.
[ -Ja] Tagastab tõese, kui FILE on olemas.
[-f] Tagastab tõese, kui FILE on olemas ja on tavaline fail.
[-g] Tagastab tõese, kui FILE on olemas ja selle SGID -bit on seatud.
[-h] Tagastab tõese, kui FILE on olemas ja on sümboolne link.
[-k] Tagastab tõese, kui FILE on olemas ja selle kleepuv bit on määratud.
[-p] Tagastab tõese, kui FILE on olemas ja on nimega toru (FIFO).
[-r] Tagastab tõese, kui FILE on olemas ja on loetav.
[-s] Tagastab tõese, kui FILE on olemas ja selle suurus on suurem kui null.
[ -] Tagastab tõese, kui failikirjeldus FD on avatud ja viitab terminalile.
[-u] Tagastab tõese, kui FILE on olemas ja selle SUID (määratud kasutaja ID) bitt on määratud.
[-in] Tagastab tõese, kui FILE on olemas ja kirjutatav.
[-x] Tagastab tõese, kui FILE on olemas ja on käivitatav.
[-O] Tagastab tõese, kui FILE on olemas ja see kuulub efektiivsele kasutajatunnusele.
[-G] Tagastab tõese, kui FILE on olemas ja selle omanik on efektiivne grupi ID.
[-NEE] Tagastab tõese, kui FILE on olemas ja on sümboolne link.
[-N] Tagastab tõese, kui FILE on olemas ja seda on pärast viimast lugemist muudetud.
[-S] Tagastab tõese, kui FILE on olemas ja on pesa.

THEN-COMMANDS ja ELSE-COMMANDS võivad olla mis tahes kehtivad UNIX-i toimingud või mis tahes käivitatav programm. Pange tähele, et siis ja olla käsud eraldatakse semikooloniga, kuna neid peetakse skripti täiesti eraldi elementideks.



Kui-siis-muul lihtne näide

Alustame oma õppetundi väga lihtsa näitega, kui lausume If-then-Else.
Siin on näidisprogramm:



Kui näide

Kui näide





Siin on väljund, mida näeme oma skripti käivitamisel:

$. ifelse1.sh
Väärtused on samad!
$

Käsurea argumentide kasutamine

Samuti võime kasutada oma skriptides käsurea argumente ning kasutada argumentide arvu ja väärtusi ennast tingimusena meie määratletud IF-lauses. Esmalt määratleme järgmise sisuga tekstifaili:



Minu nimi on LinuxHint. Ma armastan servereid, eriti Ubuntu. Nad on nii
terminaalne!

Nüüd saame kirjutada skripti, mis leiab, kas sõna esineb tekstifailis või mitte. Määratleme skripti nüüd:

viskas välja '1 dollari leidmine 2 dollarist'
haaret $ 1 2 dollarit
kui [ $? -sündinud 0 ]
siis
viskas välja '$ 1 ei leitud failist $ 2.'
muidu
viskas välja 'Failist $ 2 leiti $ 1.'
olla
viskas välja 'Skript valmis.'

See skript on väga dünaamiline. See kaalub käsurealt otsitavat sõna ja otsitavat faili. Nüüd oleme valmis oma skripti käivitama:

. ifelse2.sh armastus hello.txt

Näeme sellist väljundit:

Armastuse leidminesissetere.txt
armastus leitudsisse failitere.txt.
Skript valmis.

Käsurea argumentide arvu kontrollimine

IF-lause sees saame isegi kontrollida, mitu käsurea argumenti käsule edastati, et saaksime samamoodi toimida:

loendama=$ #
kui [ ! $ loend -gt 1 ]
siis
viskas välja 'Pole piisavalt argumente'
muidu
viskas välja 'Tubli töö!'
olla

Käivitame selle skripti kohe, näeme järgmist väljundit:

Käsurea argumendid

Käsurea argumendid

Kui-siis-Elif-muu avaldused

Samas plokis võib olla ka mitu IF -lauset, et kitsendada otsusteed, mida meie programm meie määratud käskude täitmiseks kasutab. Siin on süntaks mitme IF -lause määratlemiseks meie skriptides:

kuiKATSEKÄSKUD;
siis
TULEMUS-KÄSKUD;
elif
TEISED KÄSKUD;
siis
TEISED TULEMUSKÄSKUD;
muidu
ALTERNATE-KÄSKUD;
olla

See tundub üsna tuttav ja seda on ka lihtne jälgida. Määratleme puu toimimise kindlakstegemiseks lihtsa näite:

loendama=$ #
kui [ $ loend -ekv 1 ]
siis
viskas välja 'Leiti ainult üks argument.'
elif [ $ loend -ekv 2 ]
siis
viskas välja 'Parem, leiti kaks argumenti.'
muidu
viskas välja 'Hea töö, leitud palju argumente!'
olla

Selle käsuga saame tagasi:

Kui Siis Elif Else näide

Kui Siis Elif Else näide

Juhtumipostituste kasutamine

IF-ELSE avaldused on kasulikud, kui teil on suur valikuvõimalusi, mida peate otsustama. Kuid kui soovite toimingu sooritada ainult mõnel juhul, kui tulemus täpselt langeb kokku, võime kasutada CASE -lauseid ka Bash -skriptides. Selle süntaks näeb välja selline:

juhtumVÄLJENDUSsisseJUHTUM1)TÄITMISEKS KÄSKUD;
JUHTUM2)TÄITMISEKS KÄSKUD;
JUHTUM2)TÄITMISEKS KÄSKUD;
...)TÄITMISEKS KÄSKUD;
*)TÄITMISEKS KÄSKUD;
esac

Viimane tähega * toimib vaikimisi ja see täidetakse, kui ükski ülaltoodud juhtumitest ei vasta.

Koostame CASE avalduste abil kiiresti lihtsa näite:

juhtum '$ 1' sisse
1)
viskas välja 'Väärtus on 1.'
;;
2)
viskas välja 'Väärtus on 2.'
;;
3)
viskas välja 'Väärtus on 3.'
;;
*)
viskas välja 'Muu väärtus on möödas.'
esac

Iga CASE -lause lõpetab ;; (kahekordsed semikoolonimärgid). Selle käsuga saame tagasi:

CASE näide

CASE näide

Järeldus

Selles õppetükis vaatasime, kuidas saame kasutada määratletud Bash-skriptides IF-ELSE, IF-THEN-ELIF ja CASE lauseid konkreetsete toimingute tegemiseks, lähtudes meie programmides eksisteerivatest väärtustest või kasutaja poolt positsioonilist funktsiooni kasutades parameetrid.