Homepage » hogyan kell » A kezdők útmutatója a Shell Scripting 4 feltételeihez és az akkori utasításokhoz

    A kezdők útmutatója a Shell Scripting 4 feltételeihez és az akkori utasításokhoz

    A shell parancsfájlokkal kapcsolatos útmutatónk alapjait eléggé megismertük, hogy kényelmesen kísérletezzen. Ezen a héten a részletekben a szórakoztatóbb dolgokat, például a feltételeket és az „if-then” kijelentéseket fogjuk kezelni.

    Mik azok a feltételek?

    A mindennapi nyelvben azt mondjuk, hogy a feltételek olyan követelmények, amelyeknek meg kell felelniük ahhoz, hogy valami történjen. Ahhoz, hogy laptopom csatlakozhasson az internethez, számos feltételnek kell teljesülnie, mint például egy ISP, a modem és / vagy az útválasztó bekapcsolása, laptopom bekapcsolása stb. e követelmények nem teljesülnek, az eredmény - az internetkapcsolattal rendelkező laptopom - nem történik meg.

    Hasonlóan működik a számítástechnika területén alkalmazott feltételek. Meg tudjuk vizsgálni, hogy egy karakterlánc megfelel-e egy másik karakterláncnak, függetlenül attól, hogy egy másik karakterláncot tartalmaz-e, vagy akár egyáltalán létezik. Hasonlóképpen tesztelhetjük a numerikus érveket, hogy lássuk, hogy valaki nagy-e, kisebb, vagy egyenlő-e egy másikval. Ahhoz, hogy valami megtörténjen a teszt feltételeinek teljesülése után, akkor „if-then” állításokat használunk. A formátum elég egyszerű.

    ha a FELTÉTEL
    azután
    parancs1
    command2
    ...
    parancsn
    fi

    Ha nyilatkozatok

    Futtassunk egy gyors kicsi tesztszkriptet?

    ha teszt $ 1 -gt $ 2
    azután
    echo „$ 1 nagyobb, mint $ 2”
    fi

    Megfigyeljük, hogy csak akkor, ha ez a feltétel igaz, a parancsfájl végrehajtja a következő parancsot. Ellenkező esetben a „if” utasítás kilép. Ha vannak utasítások a „if” utasítás után, akkor a szokásos módon futnak. A következő sort a fenti szkript végére illesztettük, hogy ezt illusztráljuk:

    echo „Ez az if utasítás után jön”

    Íme néhány más numerikus operátor, amit megpróbálhat:

    • -eq: egyenlő
    • -ne: nem egyenlő
    • -lt: kevesebb, mint
    • -le: kisebb vagy egyenlő
    • -gt: nagyobb, mint
    • -ge: nagyobb vagy egyenlő

    Stringek tesztelése

    Most, ha módosítjuk a parancsfájl első sorát:

    ha teszt $ 1 = $ 2

    akkor a feltétel megvizsgálja, hogy a kettő egyenlő. Itt van egy fogás! Egy egyenlőségjel (=) használata két karakterláncot hasonlít össze, nem pedig számokkal. Ha összehasonlítani szeretné a számokat, akkor a „-eq” operátort hasonlóan kell használnunk, ahogyan a „-gt” -et használtuk fel.

    Most csináljunk újabb módosítást:

    ha teszt $ 1! = $ 2

    A felkiáltójel (!) Felvétele „nem” módosító. Ez azt jelenti, hogy csak a következő parancsot futtatja, ha a két karakterlánc nem egyezik.

    Íme néhány további karakterlánc alapú teszt, amelyet használhat:

    • string: önmagában csak egy argumentumot használ, ha a karakterlánc nem üres (null) vagy valamilyen módon nincs meghatározva
    • -n string: ez teszteli, hogy a karakterlánc nem üres-e, és meg van határozva
    • -z string: ez meg fogja vizsgálni, hogy a karakterlánc üres-e, és meg van határozva

    Mi más a If-ról??

    Elismerem, hogy a szakasz címe határozottan rossz baj volt. Oké, tudjuk, hogyan kell végrehajtani egy parancsot, ha egy teszt igaz, de mi van, ha más parancsot akarunk végrehajtani, ha hamis? Könnyen fel tudjuk állítani a kettőt, ha egy szekciót adunk a „if-then” kijelentéseinkhez - egy „más”!

    ha a FELTÉTEL
    azután
    parancs1
    command2
    ...
    parancsn
    más
    parancs1
    command2
    ...
    parancsn
    fi

    Készítsünk egy egyszerű szkriptet.

    Minden van a megfelelő behúzással. Ha megnézed, észreveszed, hogy a tesztparancs helyett szögletes zárójeleket ([és]) használtunk. Funkcionálisan egyenértékűek a célunk szempontjából, és több valószínűséggel látja a szögletes zárójeleket különböző okokból, így mostantól fogjuk használni őket.

    Az alábbiakban a következő lesz a kimenet:

    Ez olyan egyszerű!

    Most mit csináljak?

    Most, hogy tudod, hogyan kell használni a "if-then-else" utasításokat, futtathatsz parancsfájlokat, amelyek teszteket végezhetnek. Például futtathat egy parancsfájlt, amely kiszámítja a fájl md5 hash-ját, majd összehasonlítja azt a fájlban letöltöttével, hogy megnézze, hogy egyezik-e.

    Egyes bónuszpontokhoz olyan forgatókönyvet hozhat létre, amely „for” hurokkal rendelkezik, de tesztelési feltételeket használ a sorok fájllistából való leolvasása helyett…


    A kezdőknek a Shell Scripting-hez kapcsolódó útmutatójának néhány érdekes részéhez jutunk. Ha elfelejtette az előző leckéket, itt van egy gyors lista, amelyen megtekintheti:

    1. A Shell Scripting alapjai
    2. Hurkok használata
    3. További alapvető parancsok
    4. Mi a különbség a Linux kagyló között?
    5. Hogyan használjuk az Alapvető rendszeres kifejezéseket

    Ha olyan szkripteket készített vagy használt, amelyek tesztelési feltételeket, if-then-else utasításokat és „for” ciklusokat használnak, ossza meg velünk a megjegyzéseket!