Pagrindinis » kaip » Pradedančiųjų vadovas „Shell Scripting“ 4 sąlygos ir „jei-tada“ pareiškimai

    Pradedančiųjų vadovas „Shell Scripting“ 4 sąlygos ir „jei-tada“ pareiškimai

    Mes pakankamai aptarėme pagrindines gaires, susijusias su apvalkalo skriptais, kuriuos turėtumėte jaustis patogiai eksperimentuodami. Šios savaitės įmokos metu spręsime kai kuriuos įdomesnius dalykus, pvz., Sąlygas ir „jei-tada“ pareiškimus.

    Kas yra sąlygos?

    Kasdienėje kalboje sakome, kad sąlygos yra reikalavimai, kuriuos reikia įvykdyti, kad kažkas įvyktų. Kad mano nešiojamas kompiuteris galėtų prisijungti prie interneto, turi būti kelios sąlygos, kurios turi būti įvykdytos, pvz., Turint ISP, modemą ir / ar maršrutizatorių, mano nešiojamąjį kompiuterį ir pan. nesilaikoma šių reikalavimų, rezultatas - nešiojamasis kompiuteris, jungiantis prie interneto, neįvyksta.

    Panašiai ir skaičiavimo srityje taikomos sąlygos. Mes galime išbandyti, ar eilutė atitinka kitą eilutę, ar ji neatitinka kitos eilutės, ar net jei ji apskritai egzistuoja. Panašiai mes galime išbandyti skaitinius argumentus, kad pamatytume, ar jis yra didelis, nei mažesnis arba lygus kitam. Norint, kad po testo sąlygų įvyktų kažkas, mes naudojame „if-then“ pareiškimus. Jų formatas yra gana paprastas.

    jei SĄLYGOS
    tada
    komanda1
    komanda2

    vad
    fi

    Jei pareiškimai

    Leiskite paleisti greitą mažą testo scenarijų?

    jei testas $ 1 -gt $ 2
    tada
    echo „$ 1 yra didesnis nei $ 2“
    fi

    Pastebėsite, kad tik tada, kai ši sąlyga yra teisinga, scenarijus atliks šią komandą. Priešingu atveju „jei“ pranešimas bus ištrintas. Jei po „jei“ pareiškimo yra kokių nors komandų, tada jie bus paleisti kaip įprasta. Įtraukėme šią eilutę į aukščiau esančio scenarijaus pabaigą, kad tai iliustruotume:

    echo „Tai ateina po to, kai pareiškimas“

    Štai keletas kitų skaitmeninių operatorių, kuriuos galbūt norėsite išbandyti:

    • -eq: lygus
    • -ne: ne lygus
    • -lt: mažesnis nei
    • -le: mažesnis arba lygus
    • -gt: didesnis nei
    • -ge: didesnis arba lygus

    Bandymų stygos

    Dabar, jei pakeisime pirmąją mūsų scenarijaus eilutę, tai:

    jei testas $ 1 = $ 2

    tada sąlyga išbandys, ar abu yra lygūs. Čia yra sugavimo! Naudojant lygiavertį ženklą (=) lyginamos dvi eilutės, o ne skaičiai. Jei norite palyginti numerius, „-eq“ operatorių, kaip ir anksčiau, naudojote „-gt“ operatoriumi.

    Dabar atlikite kitą pakeitimą:

    jei testas $ 1! = $ 2

    Šaukinio (!) Įtraukimas veikia kaip „ne“ modifikatorius. Tai reiškia, kad ji veikia tik tada, kai abi eilutės nesutampa.

    Štai keletas papildomų testų, kuriuos galite naudoti, sąrašas:

    • string: naudojant tik vieną argumentą bandymai, jei eilutė nėra tuščia (null) arba nėra apibrėžta tam tikru būdu
    • -n string: tai patikrins, ar eilutė nėra tuščia ir yra apibrėžta
    • -z eilutė: tai patikrins, ar eilutė yra tuščia ir yra apibrėžta taip

    Ką dar apie If?

    Prisipažinsiu, kad šio skyriaus pavadinimas tikrai buvo blogas sakinys. Gerai, mes žinome, kaip vykdyti komandą, jei testas yra teisingas, bet ką daryti, jei norime įvykdyti kitą komandą, jei ji yra klaidinga? Mes galime lengvai sujungti šiuos du elementus, įtraukdami skyrių į „if-then“ pareiškimus - „kitokį“!

    jei SĄLYGOS
    tada
    komanda1
    komanda2

    vad
    Kitas
    komanda1
    komanda2

    vad
    fi

    Sudarykime paprastą scenarijų.

    Yra viskas su tinkama įdėjimu. Jei pažvelgsite atidžiai, pastebėsite, kad vietoj bandymo komandos naudojome kvadratines skliaustus ([ir]). Jie funkciniu požiūriu lygiaverčiai mūsų tikslams, ir dėl daugelio priežasčių, daugeliu atvejų, matysite kvadratines skliaustelius, todėl naudosime juos nuo šiol.

    Štai ką atrodys:

    Tai taip paprasta!

    Ką man dabar daryti?

    Dabar, kai žinote, kaip naudoti „if-then-else“ teiginius, galite paleisti scenarijus, kurie gali atlikti bandymus. Pvz., Galite paleisti scenarijų, kuris apskaičiuoja failo md5 hash ir tada palygins jį su failu, kurį atsisiuntėte, kad pamatytumėte, ar jie atitinka.

    Kai kuriems bonusiniams taškams galite sukurti scenarijų, turinčio „už“ kilpą, bet naudoja bandymo sąlygas, o ne skaityti eilutes iš sąrašo failo ...


    Mes pateksime į kai kurias įdomesnes dalis pradedantiesiems „Shell Scripting“ vadove. Jei praleidote ankstesnes pamokas, čia yra greitas sąrašas, kurį galite peržiūrėti:

    1. Shell scenarijų pagrindai
    2. Naudojant kilpas
    3. Daugiau pagrindinių komandų
    4. Kokie yra skirtumai tarp „Linux“ kriauklių?
    5. Kaip naudotis pagrindinėmis reguliariomis išraiškomis

    Jei atlikote ar naudojote scenarijus, kuriuose naudojamos testavimo sąlygos, jei-kitokie pareiškimai ir „už“ kilpos, dalinkitės su mumis komentaruose!