Hjemmeside » hvordan » Begynnerveiledningen til Shell Scripting 4 Betingelser og Hvis-da-erklæringer

    Begynnerveiledningen til Shell Scripting 4 Betingelser og Hvis-da-erklæringer

    Vi har dekket nok av det grunnleggende i vår veiledning på skalskripting som du burde føle deg komfortabel å eksperimentere med. I denne uka vil vi takle noen av de morsommere tingene, som forhold og "if-then" -klæringer.

    Hva er forholdene?

    I dagligdags språk sier vi at forholdene er krav som må møtes for noe å skje. For at min laptop skal kunne koble til Internett, er det flere forhold som må oppfylles, for eksempel å ha en Internett-leverandør, modemet og / eller ruteren er på, min laptop er på osv. Det er ganske enkelt, og hvis noen av disse kravene ikke er oppfylt, kommer resultatet - min laptop tilkobling til internett - ikke til å skje.

    Betingelser i riket med å beregne arbeid på samme måte. Vi kan teste om en streng samsvarer med en annen streng, om den ikke samsvarer med en annen streng, eller om den eksisterer i det hele tatt. På samme måte kan vi teste numeriske argumenter for å se om en er stor enn, mindre enn eller lik en annen. For å få noe til å skje etter at testbetingelsene er oppfylt, bruker vi "if-then" uttalelser. Deres format er ganske enkelt.

    hvis betingelsen
    deretter
    Command1
    Command2
    ...
    commandn
    fi

    Hvis erklæringer

    La oss kjøre et raskt lite testskript, skal vi?

    hvis test $ 1 -gt $ 2
    deretter
    ekko "$ 1 er større enn $ 2"
    fi

    Du vil legge merke til at bare når denne tilstanden er sant, vil scriptet utføre følgende kommando. Ellers vil "if" -oppgaven avslutte. Hvis det er noen kommandoer etter "if" -oppgaven, vil de bli kjørt som normalt. Jeg la den følgende linjen til slutten av det ovennevnte skriptet for å illustrere dette:

    ekko "Dette kommer etter if-setningen"

    Her er noen andre numeriske operatører du kanskje vil prøve ut:

    • -eq: lik
    • -ne: ikke lik
    • -lt: mindre enn
    • -le: mindre enn eller lik
    • -gt: større enn
    • -Ge: større enn eller lik

    Testing Strings

    Nå, hvis vi endrer den første linjen i vårt skript for å være dette:

    hvis test $ 1 = $ 2

    da vil tilstanden teste om de to er like. Det er en fangst her skjønt! Bruken av et like-tegn (=) sammenligner to strenger, og ikke tall. Hvis du ønsker å sammenligne tall, må du bruke "-eq" -operatøren på samme måte som hvordan vi brukte "-gt" over.

    La oss nå gjøre en annen endring:

    hvis test $ 1! = $ 2

    Inkluderingen av utropstegnet (!) Fungerer som en "ikke" modifikator. Det vil si at det bare kjører følgende kommando når de to strengene ikke stemmer overens.

    Her er en liste over noen flere strengbaserte tester du kan bruke:

    • streng: Bruk bare et argument av seg selv tester hvis strengen ikke er blank (null) eller ikke definert på noen måte
    • -n streng: dette vil teste om strengen ikke er blank og er definert
    • -z streng: dette vil teste om strengen er tom og er definert på den måten

    Hva annet om hvis?

    Jeg vil innrømme at den delen tittelen var definitivt en dårlig ordspill. Ok, vi vet hvordan å utføre en kommando hvis en test er sant, men hva hvis vi vil utføre en annen kommando hvis den er feil? Vi kan enkelt sette de to sammen ved å legge til en del i våre "if-then" uttalelser - et "annet"!

    hvis betingelsen
    deretter
    Command1
    Command2
    ...
    commandn
    ellers
    Command1
    Command2
    ...
    commandn
    fi

    La oss sette sammen et enkelt skript.

    Det er alt med riktig innrykk. Hvis du ser nøye ut, merker du at vi brukte firkantede parenteser ([og]) i stedet for testkommandoen. De er funksjonelt likeverdige for vårt formål, og du er mye mer sannsynlig å se firkantede parentes av ulike grunner, så vi bruker dem fra nå av.

    Her ser utgangen ut som:

    Det er så enkelt!

    Hva gjør jeg nå?

    Nå som du vet hvordan du bruker "if-then-else" -klæringer, kan du kjøre skript som kan utføre tester. For eksempel kan du kjøre et skript som vil beregne en md5 hash av en fil og deretter sammenligne den med den du lastet ned i en fil for å se om de samsvarer.

    For noen bonuspoeng kan du opprette et skript som har en "for" loop, men bruker testforhold i stedet for å lese linjer ut av en listefil ...


    Vi kommer til noen av de mer interessante delene i vår nybegynners guide til Shell Scripting. Hvis du savnet tidligere leksjoner, er det en rask liste for deg å sjekke ut:

    1. Grunnleggende om Shell Scripting
    2. Bruke for løkker
    3. Flere enkle kommandoer
    4. Hva er forskjellene mellom Linux-skjell?
    5. Hvordan bruke Basic Regular Expressions

    Hvis du har laget eller brukt skript som utnytter testbetingelser, om-da-else-setninger og "for" sløyfer, kan du dele med oss ​​ned i kommentarene!