Domača » kako » Navodila za začetnike za Shell Scripting 4 Pogoji & Če-potem Izjave

    Navodila za začetnike za Shell Scripting 4 Pogoji & Če-potem Izjave

    V našem vodniku o skriptnih lupinah smo zajemali dovolj osnov, da bi se morali počutiti prijetno eksperimentirati. V obroku tega tedna bomo reševali nekaj bolj zabavnih stvari, kot so pogoji in izjave »če-potem«.

    Kaj so pogoji?

    V vsakdanjem jeziku govorimo, da so pogoji zahteve, ki jih je treba izpolniti, da bi se kaj zgodilo. Da bi se moj prenosni računalnik lahko povezal z internetom, je treba izpolniti več pogojev, kot je imeti ponudnika internetnih storitev, modem in / ali usmerjevalnik, vklopljen prenosni računalnik itd. od teh zahtev niso izpolnjene, rezultat - moj prenosni računalnik se povezuje z internetom - ne zgodi.

    Podobno so tudi pogoji v računalniškem delu. Preverimo, ali se niz ujema z drugim nizom, ali se ne ujema z drugim nizom ali celo če obstaja. Podobno lahko preizkusimo numerične argumente, da vidimo, ali je ena velika, manj ali enaka drugi. Da bi se kaj zgodilo, ko so izpolnjeni pogoji testa, uporabljamo stavke »če-potem«. Njihova oblika je precej preprosta.

    če POGOJ
    potem
    command1
    command2

    commandn
    fi

    Če so izjave

    Zaženi hiter testni scenarij?

    če preizkusite $ 1 -gt $ 2
    potem
    echo »$ 1 je več kot 2 $«
    fi

    Opazili boste, da bo skript izvršil naslednji ukaz, ko bo ta pogoj resničen. V nasprotnem primeru bo izjava »if« izstopila. Če obstajajo kakšni ukazi za stavkom »if«, se bodo izvajali kot običajno. Dodal sem naslednjo vrstico na konec zgornjega scenarija, da ponazorim to:

    echo "To je po izjavi if"

    Tu je nekaj drugih številčnih operaterjev, ki jih boste morda želeli preizkusiti:

    • -eq: enako
    • -ne: ni enako
    • -lt: manj kot
    • -le: manj ali enako
    • -gt: večji od
    • -ge: večja ali enaka

    Testiranje nizov

    Zdaj, če spreminjamo prvo vrstico našega skripta, da bo to:

    če je test 1 $ = 2 $

    potem se bo pogoj preizkusil, če sta oba enaka. Tukaj pa je ulov! Uporaba znaka enakovrednosti (=) primerja dva niza in ne številke. Če želite primerjati številke, morate uporabiti operaterja »-eq« podobno kot zgoraj »-gt«..

    Zdaj pa naredimo še eno spremembo:

    če preizkusite $ 1! = $ 2

    Vključitev klicaja (!) Deluje kot "ne" modifikator. To pomeni, da zažene le naslednji ukaz, ko se dva niza ne ujemata.

    Tukaj je seznam nekaterih testov, ki temeljijo na nizih in jih lahko uporabite:

    • string: s samo argumentom, ki ga sam preizkusi, če niz ni prazen (null) ali ni definiran na nek način
    • -n string: to bo preverilo, ali niz ni prazen in je definiran
    • -z string: to bo preverilo, ali je niz prazen in je definiran na ta način

    Kaj še o tem, če?

    Priznam, da je naslov naslova zagotovo slaba beseda. V redu, vemo, kako narediti ukaz, če je test resničen, toda kaj, če želimo izvesti drug ukaz, če je napačen? Z lahkoto jih lahko sestavimo tako, da dodamo odsek k našim izjavam »če-potem« - »drugo«!

    če POGOJ
    potem
    command1
    command2

    commandn
    drugače
    command1
    command2

    commandn
    fi

    Dajmo skupaj preprost scenarij.

    Vse je z ustrezno vdolbino. Če pozorno pogledate, boste opazili, da smo namesto testnega ukaza uporabili oglati oklepaji ([in]). Funkcionalno so enakovredne za naše namene in veliko bolj verjetno boste videli oglati oklepaji iz različnih razlogov, zato jih bomo od zdaj naprej uporabljali.

    Tukaj bo prikazan rezultat:

    Tako enostavno je!

    Kaj naj storim zdaj?

    Zdaj, ko veste, kako uporabljati stavke »if-then-else«, lahko zaženete skripte, ki lahko izvajajo teste. Na primer, lahko zaženete skript, ki bo izračunal msh5 razpršeno datoteko in ga nato primerjal s tisto, ki ste jo prenesli v datoteko, da vidite, ali se ujemajo.

    Za nekatere bonus točke lahko ustvarite skript, ki ima zanko »za«, vendar uporablja preskusne pogoje namesto branja vrstic iz datoteke s seznamom ...


    Prišli smo do nekaterih bolj zanimivih delov v Vodniku za začetnike za skriptiranje Shell. Če ste pozabili na prejšnje lekcije, si lahko ogledate hiter seznam:

    1. Osnove skriptnega programa Shell
    2. Uporaba za zanke
    3. Več osnovnih ukazov
    4. Kakšne so razlike med Linux lupinami?
    5. Kako uporabljati osnovne regularne izraze

    Če ste naredili ali uporabljali skripte, ki uporabljajo pogoje testiranja, stavke if-then-else in "for", jih delite z nami v komentarjih!