Hjemmeside » hvordan » Begynderens Guide til Shell Scripting 4 Betingelser & Hvis-Så-sætninger

    Begynderens Guide til Shell Scripting 4 Betingelser & Hvis-Så-sætninger

    Vi har dækket nok af det grundlæggende i vores guide til shell scripting, som du skal føle dig godt tilpas med at eksperimentere. I denne uges afdrag vil vi takle nogle af de mere sjove ting, som betingelser og "hvis-da" udsagn.

    Hvad er betingelser?

    I dagligdags sprog siger vi, at forholdene er krav, der skal opfyldes for noget at ske. For at min bærbare computer skal kunne oprette forbindelse til internettet, er der flere betingelser, der skal opfyldes, som at have en internetudbyder, modemet og / eller routeren er tændt, min bærbare computer er tændt osv. Det er ret simpelt, og hvis nogen af disse krav er ikke opfyldt, sker resultatet - min bærbar computer, der forbinder til internettet - ikke.

    Betingelser inden for beregning af arbejde på samme måde. Vi kan teste om en streng matcher en anden streng, uanset om den ikke matcher en anden streng, eller om den overhovedet eksisterer. På samme måde kan vi teste numeriske argumenter for at se, om man er stor end, mindre end eller lig med en anden. For at få noget til at ske efter at betingelserne for testen er opfyldt, bruger vi "hvis-da" udsagn. Deres format er ret simpelt.

    hvis betingelse
    derefter
    Command1
    Command2
    ...
    commandn
    fi

    Hvis erklæringer

    Lad os køre et hurtigt lille test script, skal vi?

    hvis test $ 1 -gt $ 2
    derefter
    ekko "$ 1 er større end $ 2"
    fi

    Du bemærker, at kun når den betingelse er sand, vil scriptet udføre følgende kommando. I modsat fald vil "if" -opstillingen afslutte. Hvis der er kommandoer efter "if" -opgørelsen, så bliver de kørt som normalt. Jeg tilføjede følgende linje til slutningen af ​​vores ovenstående script for at illustrere dette:

    ekko "Dette kommer efter if-udsagnet"

    Her er nogle andre numeriske operatører, du måske vil prøve:

    • -eq: lig med
    • -ne: ikke lig med
    • -lt: mindre end
    • -le: mindre end eller lig med
    • -gt: større end
    • -ge: større end eller lig med

    Teststreng

    Nu, hvis vi ændrer den første linje i vores script for at være dette:

    hvis test $ 1 = $ 2

    så vil tilstanden teste, hvis de to er ens. Der er en fangst her dog !! Brugen af ​​et ligestegn (=) sammenligner to strenge og ikke tal. Hvis du ønsker at sammenligne tal, skal du bruge "-eq" -operatøren på samme måde som hvordan vi brugte "-gt" ovenfor.

    Lad os nu lave en anden ændring:

    hvis test $ 1! = $ 2

    Inkluderingen af ​​udråbstegn (!) Fungerer som en "ikke" modifikator. Det vil sige, det kører kun følgende kommando, når de to strenge ikke stemmer overens.

    Her er en liste over nogle mere strengbaserede tests, du kan bruge:

    • streng: Brug blot et argument i sig selv tests, hvis strengen ikke er blank (null) eller ikke defineret på en eller anden måde
    • -n streng: dette vil teste om strengen ikke er blank og er defineret
    • -z-streng: dette vil teste om snoren er tom og er defineret på den måde

    Hvad andet om If?

    Jeg indrømmer, at denne afsnit titel var absolut en dårlig ordsprog. Okay, vi ved, hvordan man udfører en kommando, hvis en test er sand, men hvad hvis vi vil udføre en anden kommando, hvis det er falsk? Vi kan nemt sætte de to sammen ved at tilføje et afsnit til vores "if-then" udsagn - et "andet"!

    hvis betingelse
    derefter
    Command1
    Command2
    ...
    commandn
    andet
    Command1
    Command2
    ...
    commandn
    fi

    Lad os sammensætte et simpelt script.

    Der er alt med den rette indrykning. Hvis du ser tæt på, vil du bemærke, at vi brugte firkantede parenteser ([og]) i stedet for testkommandoen. De er funktionelt ækvivalente til vores formål, og du er meget mere tilbøjelige til at se firkantede parenteser af forskellige årsager, så vi bruger dem fra nu af.

    Her ser udgangen sig ud:

    Det er så nemt!

    Hvad gør jeg nu?

    Nu hvor du ved, hvordan du bruger "if-then-else" -opgørelser, kan du køre scripts, der kan udføre tests. Du kan f.eks. Køre et script, der skal beregne en md5 hash for en fil og derefter sammenligne den med den, du downloadede i en fil for at se, om de matcher.

    For nogle bonuspoint kan du oprette et script, der har en "for" loop, men bruger testbetingelser i stedet for at læse linjer ud af en listefil ...


    Vi kommer til nogle af de mere interessante dele i vores Beginners Guide til Shell Scripting. Hvis du har gået glip af de tidligere lektioner, er der en hurtig liste for dig at tjekke ud:

    1. Grundlaget for Shell Scripting
    2. Anvendes til løkker
    3. Flere grundlæggende kommandoer
    4. Hvad er forskellene mellem Linux-skaller?
    5. Sådan bruges Basic Regular Expressions

    Hvis du har lavet eller brugt scripts, der udnytter testbetingelser, hvis-da-ellers udtalelser og "for" sløjfer, kan du dele med os i kommentarerne!