Bash Če-potem-drug Primer

Bash If Then Else Example



V tej lekciji bomo videli, kako lahko uporabimo stavke If-Then-Else v skriptih okolja Bash, ki jih pišemo. Izjave If-Then-Else so uporabno orodje za določanje poti dejanja skripta, ko so izpolnjeni nekateri pogoji. Poglejmo, kakšna je sintaksa stavkov If-Then-Else:

čeNEKAJ UKAZOV;
potemTUDI-UKAZI;
drugačeDRUGE UKAZE;
biti

V zgornjem prikazanem ukazu, če se ugotovi, da so SOME-COMMANDS resnične ali da je stanje vrnitve 0, se izvedejo THEN-COMMANDS. Če temu ni tako, se izvedejo DRUGE UKAZI. V VELIKI UKAZI običajno naredimo nekaj primerjav nizov ali vrednosti v obliki celih števil. Izvajamo lahko tudi veliko operacij, ki vključujejo datoteke. Oglejmo si nekaj primerov primarnih ukazov, ki se uporabljajo predvsem pri delu z datotečnimi pogoji:







Primarno Pomen
[-do] Vrne true, ko obstaja FILE.
[-b] Vrne true, če FILE obstaja & je posebna datoteka bloka.
[-c] Vrne vrednost true, če FILE obstaja & je posebna datoteka z znaki.
[-d] Vrne true, ko FILE obstaja & je imenik.
[-In] Vrne true, ko obstaja FILE.
[-f] Vrne true, če FILE obstaja & je navadna datoteka.
[-g] Vrne vrednost true, ko FILE obstaja in je nastavljen njen bit SGID.
[-h] Vrne vrednost true, če FILE obstaja & je simbolna povezava.
[-k] Vrne true, ko FILE obstaja in je nastavljen njen lepljivi bit.
[-p] Vrne true, če FILE obstaja & je poimenovana cev (FIFO).
[-r] Vrne vrednost true, če FILE obstaja in je berljiva.
[-s] Vrne true, če FILE obstaja in ima velikost večjo od nič.
[-t] Vrne true, ko je deskriptor datoteke FD odprt in se nanaša na terminal.
[-u] Vrne vrednost true, ko datoteka FILE obstaja in je nastavljen njen bit SUID (nastavljen ID uporabnika).
[-in] Vrne vrednost true, če FILE obstaja in je nanjo mogoče zapisati.
[-x] Vrne true, ko datoteka FILE obstaja in je izvedljiva.
[-O] Vrne vrednost true, če FILE obstaja in je v lasti dejanskega ID -ja uporabnika.
[-G] Vrne true, če FILE obstaja in je v lasti učinkovitega ID -ja skupine.
[-THE] Vrne vrednost true, če FILE obstaja & je simbolna povezava.
[-N] Vrne vrednost true, ko FILE obstaja in je bila spremenjena od zadnjega branja.
[-S] Vrne true, če FILE obstaja & je vtičnica.

THEN-COMMANDS in ELSE-COMMANDS so lahko vse veljavne operacije UNIX ali kateri koli izvedljiv program. Upoštevajte, da je potem in biti ukazi so ločeni s podpičjem, saj veljajo za popolnoma ločene elemente skripta.



Preprost primer če-potem-drugače

Začnimo našo lekcijo z zelo preprostim primerom z izjavami Če-potem-drugače.
Tu je vzorec programa:



Če Primer

Če Primer





Tukaj je rezultat, ki ga vidimo, ko zaženemo skript:

$. ifelse1.sh
Vrednosti so enake!
$

Uporaba argumentov ukazne vrstice

V svojih skriptih lahko uporabimo tudi argumente ukazne vrstice, število pogojev in vrednosti pa kot pogoj v stavku IF, ki ga definiramo. Najprej določimo besedilno datoteko z naslednjo vsebino:



Moje ime je LinuxHint. Obožujem strežnike, še posebej tiste Ubuntu. Tako so
terminalni!

Zdaj lahko napišemo skript, ki ugotovi, ali se beseda pojavi v besedilni datoteki ali ne. Določimo skript:

vrgel ven 'Iskanje 1 USD v 2 USD'
oprijem 1 USD 2 USD
če [ $? -Rojen 0 ]
potem
vrgel ven '$ 1 ni najdeno v datoteki $ 2.'
drugače
vrgel ven 'V datoteki $ 2 je bil najden 1 $.'
biti
vrgel ven 'Skript je dokončan.'

Ta scenarij je zelo dinamičen. Upošteva besedo za iskanje in datoteko za iskanje iz same ukazne vrstice. Zdaj smo pripravljeni zagnati naš skript:

. ifelse2.sh ljubezen hello.txt

Videli bomo rezultat, kot je:

Iskanje ljubeznivhello.txt
ljubezen najdenav mapahello.txt.
Scenarij dokončan.

Preverjanje števila argumentov ukazne vrstice

Znotraj stavka IF lahko celo preverimo, koliko argumentov ukazne vrstice je bilo posredovanih ukazu, da lahko delujemo po istem:

šteti=# USD
če [ ! $ count -gt 1 ]
potem
vrgel ven 'Ni dovolj argumentov'
drugače
vrgel ven 'Dobro opravljeno!'
biti

Zaženimo ta skript, videli bomo naslednji izhod:

Argumenti ukazne vrstice

Argumenti ukazne vrstice

Izjave If-Then-Elif-Else

V istem bloku imamo lahko tudi več stavkov IF, da zožimo pot odločanja, ki jo naš program izvaja za izvajanje ukazov, ki smo jih definirali. Tukaj je sintaksa za definiranje več stavkov IF v naših skriptih:

čeTEST-UKAZI;
potem
REZULTAT-UKAZI;
elif
DRUGI UKAZI;
potem
DRUGI REZULTAT-UKAZI;
drugače
ALTERNATIVNE UKAZE;
biti

To se zdi precej znano in tudi enostavno sledljivo. Določimo preprost primer, da ugotovimo, kako drevo deluje:

šteti=# USD
če [ $ count -ekv 1 ]
potem
vrgel ven 'Najden je bil le en argument.'
elif [ $ count -ekv 2 ]
potem
vrgel ven 'Bolje, najdena sta dva argumenta.'
drugače
vrgel ven 'Dobro delo, najdenih je veliko argumentov!'
biti

Evo, kaj dobimo s tem ukazom:

Če potem primer Elif Else

Če potem primer Elif Else

Uporaba poročil o zadevah

Izjave IF-ELSE so uporabne, če imate velik seznam možnosti, za katere se morate odločiti. Če pa želite izvesti dejanje le v nekaj primerih, ki se popolnoma ujemajo z rezultatom, lahko stavke CASE uporabimo tudi v skriptih Bash. Njegova sintaksa izgleda tako:

OvitekIZRAŽANJEvZADEVA 1)UKAZI ZA IZVAJANJE;
ZADEVA 2)UKAZI ZA IZVAJANJE;
ZADEVA 2)UKAZI ZA IZVAJANJE;
...)UKAZI ZA IZVAJANJE;
*)UKAZI ZA IZVAJANJE;
esac

Zadnji primer z * deluje kot privzeti primer in se bo izvajal, ko se ne bo ujelo nobeno od zgoraj definiranih primerov.

Na hitro zgradimo preprost primer z uporabo stavkov CASE:

Ovitek '1 USD' v
1)
vrgel ven 'Vrednost je 1.'
;;
2)
vrgel ven 'Vrednost je 2.'
;;
3)
vrgel ven 'Vrednost je 3.'
;;
*)
vrgel ven 'Prenesena je druga vrednost.'
esac

Vsak stavek CASE zaključi z ;; (dvojne oznake podpičja). Evo, kaj dobimo s tem ukazom:

Primer CASE

Primer CASE

Zaključek

V tej lekciji smo pogledali, kako lahko uporabimo stavke IF-ELSE, IF-THEN-ELIF in CASE v skriptih Bash, ki jih opredelimo za izvedbo posebnih dejanj na podlagi vrednosti, ki obstajajo v naših programih ali jih je uporabnik sprejel s pozicijskim parametri.