Úvodná » ako » Príručka pre začiatočníkov pre Shell skriptovanie 4 podmienky a ak-potom vyhlásenie

    Príručka pre začiatočníkov pre Shell skriptovanie 4 podmienky a ak-potom vyhlásenie

    Pokryli sme dostatok základných údajov v našom sprievodcovi na shell skriptovaní, ktoré by ste mali cítiť príjemne experimentovať. V tejto týždňovej splátke sa budeme zaoberať niektorými zábavnými vecami, ako sú podmienky a vyhlásenia "ak-potom".

    Aké sú podmienky?

    V každodennom jazyku hovoríme, že podmienky sú požiadavky, ktoré musia byť splnené, aby sa niečo mohlo vyskytnúť. Aby mohol môj prenosný počítač pripojiť k internetu, existuje niekoľko podmienok, ktoré musia byť splnené, napríklad mať ISP, modem a / alebo smerovač, ktorý je zapnutý, môj laptop je zapnutý atď Je to veľmi jednoduché, a ak niekto týchto požiadaviek nie je splnená, výsledok - môj laptop pripájajúci sa na internet - sa nestane.

    Podmienky v oblasti výpočtovej práce podobne. Môžeme otestovať, či sa reťazec zhoduje s iným reťazcom, či sa nezhoduje s iným reťazcom alebo dokonca, či vôbec existuje. Podobne môžeme testovať číselné argumenty, aby sme zistili, či je jeden z nich skvelý ako, menší alebo rovný inému. Ak máme splniť podmienky testu, použijeme "if-then" vyhlásenia. Ich formát je veľmi jednoduchý.

    ak STAV
    potom
    Command1
    príkaz2
    ...
    commandn
    fi

    Ak vyhlásenia

    Poďme spustiť rýchly malý testovací skript, či my?

    ak test $ 1 -gt $ 2
    potom
    echo "$ 1 je väčšie ako $ 2"
    fi

    Všimnete si, že iba ak je táto podmienka pravdivá, skript vykoná nasledujúci príkaz. V opačnom prípade príkaz "if" skončí. Ak existujú nejaké príkazy po vyhlásení "if", potom budú spustené ako normálne. Pridal som na koniec vyššie uvedeného skriptu nasledujúci riadok, aby som to ilustroval:

    echo "Toto príde po vyhlásení if"

    Tu je niekoľko ďalších číselných operátorov, ktoré môžete vyskúšať:

    • -eq: rovná sa
    • -ne: nerovná
    • -to: menej ako
    • -le: menej ako alebo rovné
    • -gt; väčší než
    • -ge: väčšia alebo rovná

    Testovanie reťazcov

    Teraz, ak upravíme prvý riadok nášho skriptu takto:

    ak test $ 1 = $ 2

    potom bude podmienka testovať, ak sú dva rovnaké. Tu je tu chytiť! Použitie značky rovná sa (=) porovnáva dva reťazce, nie čísla. Ak chcete porovnať čísla, musíte použiť operátor "-eq" podobne ako sme použili "-gt" vyššie.

    Teraz urobíme ďalšiu zmenu:

    ak test $ 1! = $ 2

    Začlenenie výkričníka (!) Pôsobí ako "nie" modifikátor. To znamená, že iba dva reťazce sa nezhodujú.

    Tu je zoznam niektorých testov založených na reťazcoch, ktoré môžete použiť:

    • string: pomocou samotného argumentu sa testuje, či reťazec nie je prázdny (null) alebo nie je definovaný nejakým spôsobom
    • -n reťazec: testuje, či reťazec nie je prázdny a je definovaný
    • -z reťazec: toto sa bude testovať, ak je reťazec prázdny a je definovaný týmto spôsobom

    Čo iné o tom?

    Priznám sa, že názov sekcie bol určite zlý hriech. Dobre, vieme, ako vykonať príkaz, ak je test pravdivý, ale čo keď chceme vykonať iný príkaz, ak je to falošné? Jednoducho ich môžeme dať dohromady pridaním časti do našich "if-then" vyhlásení - "else"!

    ak STAV
    potom
    Command1
    príkaz2
    ...
    commandn
    inak
    Command1
    príkaz2
    ...
    commandn
    fi

    Dajte dohromady jednoduchý skript.

    Je tu všetko so správnym odsadením. Ak sa pozriete pozorne, všimnete si, že namiesto testovacieho príkazu sme použili hranaté zátvorky ([a]). Sú funkčne ekvivalentné pre naše účely a je pravdepodobnejšie, že uvidíte hranaté zátvorky z rôznych dôvodov, takže ich budeme používať odteraz.

    Tu je výstup, ktorý bude vypadať takto:

    Je to tak jednoduché!

    Čo mám robiť teraz?

    Teraz, keď viete, ako používať vyhlásenia "if-then-else", môžete spustiť skripty, ktoré môžu vykonávať testy. Napríklad môžete spustiť skript, ktorý vypočíta md5 hash súboru a potom ho porovnať so súbormi, ktoré ste stiahli v súbore, aby ste zistili, či sa zhodujú.

    Pri niektorých bonusových bodoch môžete vytvoriť skript, ktorý má slučku "za", ale použije testovacie podmienky namiesto čítania riadkov zo zoznamu súborov ...


    Prichádzame k niektorým z najzaujímavejších častí v našom sprievodcovi Bellner's Shell Scripting. Ak ste vynechali predchádzajúce lekcie, nájdete tu rýchly zoznam, ktorý môžete skontrolovať:

    1. Základy skriptovania Shell
    2. Použitie pre slučky
    3. Ďalšie základné príkazy
    4. Aké sú rozdiely medzi shellmi Linuxu??
    5. Ako používať základné regulárne výrazy

    Ak ste vytvorili alebo použili skripty, ktoré využívajú testovacie podmienky, výkazy if-then-else a smyčky "pre", zdieľajte s nami v komentároch!