Početna » kako da » Vodič za početnike za Shell Scripting 4 Uvjeti & Ako-onda Izjave

    Vodič za početnike za Shell Scripting 4 Uvjeti & Ako-onda Izjave

    U našem vodiču za skriptiranje skripti pokrili smo dovoljno osnove da biste se trebali osjećati ugodno eksperimentirati. U ovom tjednu ćemo rješavati neke od zabavnijih stvari, poput uvjeta i izjava "ako-onda".

    Koji su uvjeti?

    U svakodnevnom jeziku kažemo da su uvjeti zahtjevi koji se moraju ispuniti da bi se nešto dogodilo. Da bi se moje prijenosno računalo moglo povezati s internetom, potrebno je ispuniti nekoliko uvjeta, kao što je postavljanje ISP-a, modema i / ili usmjerivača, uključivanje prijenosnog računala itd. Prilično je jednostavno, a ako postoji od tih zahtjeva nisu ispunjeni, rezultat - moje prijenosno računalo povezuje se s internetom - ne događa se.

    Isto tako, uvjeti u području računalnog rada. Možemo testirati da li se niz podudara s drugim nizom, bez obzira na to podudara li se s drugim nizom, ili čak ako uopće postoji. Slično tome, možemo testirati numeričke argumente kako bismo vidjeli je li on velik od, manji ili jednak drugom. Da bi se nešto dogodilo nakon što su zadovoljeni uvjeti testa, koristimo izjave "ako-onda". Njihov format je prilično jednostavan.

    ako je CONDITION
    zatim
    command1
    command2
    ...
    commandn
    fi

    Ako su Izjave

    Pokušajmo brzo testirati, hoćemo li?

    ako testirate $ 1 -gt $ 2
    zatim
    echo "$ 1 je veći od 2 USD"
    fi

    Primijetit ćete da samo kada je taj uvjet istinit, skripta će izvršiti sljedeću naredbu. U suprotnom, izlaz će "if". Ako postoje naredbe nakon izjave "if", one će se izvoditi kao i obično. Dodao sam sljedeći redak na kraj gornje skripte kako bih ilustrirao ovo:

    echo "Ovo dolazi nakon izjave if"

    Evo nekih drugih numeričkih operatora koje možete isprobati:

    • -eq: jednako
    • -ne: nije jednako
    • -lt: manje od
    • -le: manje ili jednako
    • -gt: veći od
    • -ge: veći ili jednak

    Testiranje nizova

    Sada, ako izmijenimo prvi redak naše skripte da bude ovo:

    ako je test $ 1 = $ 2

    tada će se stanje testirati ako su dva jednaka. Tu je uhvatiti ovdje ipak! Upotreba znaka jednakosti (=) uspoređuje dva niza, a ne brojeve. Ako želite usporediti brojeve, upotrijebite operator "-eq" slično onome kako smo koristili "-gt" iznad.

    Sada napravimo još jednu izmjenu:

    ako testira $ 1! = $ 2

    Uključivanje uskličnika (!) Djeluje kao "ne" modifikator. To znači da pokreće samo sljedeću naredbu kada se dva niza ne podudaraju.

    Evo popisa nekih testova temeljenih na nizovima koje možete koristiti:

    • string: koristi samo argument koji se sam testira ako string nije prazan (null) ili nije definiran na neki način
    • -n string: ovo će provjeriti je li string prazan i definiran
    • -z string: ovo će provjeriti je li string prazan i definiran na taj način

    Što još o ako?

    Priznajem, naslov naslova je definitivno bio loša igra. Dobro, znamo kako izvršiti naredbu ako je test istinit, ali što ako želimo izvršiti drugu naredbu ako je lažna? Lako ih možemo povezati dodavanjem dijela našim izjavama "ako-onda" - "drugo"!

    ako je CONDITION
    zatim
    command1
    command2
    ...
    commandn
    drugo
    command1
    command2
    ...
    commandn
    fi

    Spojimo jednostavnu skriptu.

    Sve je to s ispravnom udubljenjem. Ako bolje pogledate, primijetit ćete da smo umjesto testne naredbe koristili uglate zagrade ([i]). Funkcionalno su ekvivalentne za naše potrebe, a vjerojatnije je da ćete vidjeti kvadratne zagrade iz različitih razloga, pa ćemo ih od sada koristiti.

    Evo kako će izgledati:

    Tako je jednostavno!

    Što mi je činiti sada?

    Sada kada znate kako koristiti izraze "if-then-else", možete pokrenuti skripte koje mogu izvoditi testove. Na primjer, možete pokrenuti skriptu koja će izračunati md5 hash datoteke, a zatim je usporediti s onom koju ste preuzeli u datoteku kako biste vidjeli odgovaraju li.

    Za neke bonus točke možete stvoriti skriptu koja ima petlju "za", ali koristi testne uvjete umjesto čitanja redaka iz datoteke popisa ...


    Približavamo se nekim zanimljivijim dijelovima našeg Vodiča za početnike za skriptiranje. Ako ste propustili prethodne lekcije, evo kratkog popisa koji možete provjeriti:

    1. Osnove skriptiranja ljuske
    2. Korištenje za petlje
    3. Više osnovnih naredbi
    4. Koje su razlike između Linux ljuski?
    5. Kako koristiti osnovne regularne izraze

    Ako ste izradili ili upotrijebili skripte koje koriste uvjete testiranja, izjave if-then-else i "for", podijelite s nama dolje u komentarima!