Hemsida » hur » Nybörjarens guide till Shell Scripting 4 Villkor & Om-då-uttalanden

    Nybörjarens guide till Shell Scripting 4 Villkor & Om-då-uttalanden

    Vi har täckt tillräckligt med grunderna i vår guide på skalskription som du borde känna dig bekväm att experimentera med. I den här veckans avdrag kommer vi att ta itu med några av de roligare sakerna, som villkor och "if-then" -förklaringar.

    Vad är förhållandena?

    I vardagsspråk säger vi att förutsättningar är krav som måste uppfyllas för att något ska uppstå. För att min bärbara dator ska kunna ansluta till internet finns det flera villkor som måste uppfyllas, som att ha en ISP, modemet och / eller routern är på, min bärbara dator är på osv. Det är ganska enkelt, och om någon av dessa krav är inte uppfyllda, resultatet - min laptop som ansluter till internet - händer inte.

    Villkoren i beräkningen av arbetet på samma sätt. Vi kan testa om en sträng matchar en annan sträng, oavsett om den inte matchar en annan sträng, eller ens om den existerar alls. På samma sätt kan vi testa numeriska argument för att se om en är stor än, mindre än eller lika med en annan. För att få något att hända efter att testförhållandena är uppfyllda använder vi "if-then" uttalanden. Deras format är ganska enkelt.

    om villkor
    sedan
    kommando1
    kommando2
    ...
    commandn
    fi

    Om uttalanden

    Låt oss köra ett snabbt litet testskript, ska vi?

    om test $ 1 -gt $ 2
    sedan
    eko "$ 1 är större än $ 2"
    fi

    Du kommer märka att endast när det här tillståndet är sant kommer scriptet att utföra följande kommando. I annat fall kommer "if" -sättet att avslutas. Om det finns några kommandon efter "if" -förklaringen, kommer de att köras som vanligt. Jag lade till följande rad till slutet av vårt ovanstående skript för att illustrera detta:

    echo "Detta kommer efter if-uttalandet"

    Här är några andra numeriska operatörer som du kanske vill pröva:

    • -eq: lika med
    • -ne: inte lika med
    • -lt: mindre än
    • -le: mindre än eller lika med
    • -gt: större än
    • -ge: större än eller lika med

    Teststrängar

    Om vi ​​ändrar den första raden av vårt manus för att vara detta:

    om test $ 1 = $ 2

    då testas villkoret om de två är lika. Det finns en fångst här men !! Användningen av ett lika tecken (=) jämför två strängar och inte siffror. Om du vill jämföra siffror, måste du använda operatören "-eq" på samma sätt som hur vi använde "-gt" ovan.

    Nu, låt oss göra en annan ändring:

    om test $ 1! = $ 2

    Inkluderingen av utropstecken (!) Fungerar som en "icke" modifierare. Det betyder att det bara kör följande kommando när de två strängarna inte matchar.

    Här är en lista över några mer strängbaserade tester du kan använda:

    • sträng: Använd bara ett argument i sig självt test om strängen inte är blank (null) eller inte definierad på något sätt
    • -n sträng: detta testar om strängen inte är blank och definieras
    • -z-sträng: Detta testar om strängen är blank och definieras så

    Vad annat om If?

    Jag ska erkänna att den här titeln var definitivt en dålig ordlista. Okej, vi vet hur man utför ett kommando om ett test är sant, men om vi vill utföra ett annat kommando om det är felaktigt? Vi kan enkelt sätta de två ihop genom att lägga till en sektion till våra "if-then" uttalanden - ett "annat"!

    om villkor
    sedan
    kommando1
    kommando2
    ...
    commandn
    annan
    kommando1
    kommando2
    ...
    commandn
    fi

    Låt oss sätta ihop ett enkelt skript.

    Det finns allt med rätt inslag. Om du tittar noga märker du att vi använde kvadratkonsoler ([och]) istället för testkommandot. De är funktionellt ekvivalenta för våra ändamål, och du är mycket mer benägna att se torgets parentes av olika skäl, så vi använder dem från och med nu.

    Så här ser utmatningen ut:

    Det är så enkelt!

    Vad gör jag nu?

    Nu när du vet hur man använder "if-then-else" -förklaringar, kan du köra skript som kan utföra test. Till exempel kan du köra ett skript som kommer att beräkna en md5 hash för en fil och sedan jämföra den med den du laddat ner i en fil för att se om de matchar.

    För vissa bonuspoäng kan du skapa ett skript som har en "för" loop, men använder testförhållanden istället för att läsa rader ur en listfil ...


    Vi kommer till några av de mer intressanta delarna i vår nybörjarhandledning till Shell Scripting. Om du missade de tidigare lektionerna, här är en snabb lista för dig att kolla in:

    1. Grunderna för Shell Scripting
    2. Används för loopar
    3. Fler grundläggande kommandon
    4. Vad är skillnaderna mellan Linux-skalen?
    5. Så här använder du vanliga vanliga uttryck

    Om du har skapat eller använt skript som använder testförhållanden, om-då-annars uttalanden och "för" loopar, dela med oss ​​ner i kommentarerna!