Android

Bash if..else uttalande

Shell Scripting - If & If/else

Shell Scripting - If & If/else

Innehållsförteckning:

Anonim

Beslutsfattande är ett av de mest grundläggande begreppen inom datorprogrammering. Liksom på något annat programmeringsspråk, if , if..else , if..elif..else och kapslade if uttalanden i Bash kan användas för att köra kod baserat på ett visst villkor.

I denna handledning kommer vi att leda dig genom grunderna i Bash if uttalanden och visa dig hur du använder dem i dina skalskript.

if uttalande

Bash if balsam kan ha olika former. Det mest grundläggande if uttalandet har följande form:

if TEST-COMMAND then STATEMENTS fi

if satsen börjar med if nyckelordet följt av det villkorade uttrycket och det then nyckelordet. Uttalandet slutar med fi nyckelordet.

Om TEST-COMMAND utvärderas till True , kommer STATEMENTS . Om TEST-COMMAND returnerar False , händer ingenting, STATEMENTS ignoreras.

I allmänhet är det en bra praxis att alltid strecksätta din kod och separera kodblock med tomma rader. De flesta väljer att använda antingen 4-rums- eller 2-rumsindragning. Indragningar och tomma rader gör din kod mer läsbar och organiserad.

Låt oss titta på följande exempelskript som kontrollerar om ett visst antal är större än 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Spara koden i en fil och kör den från kommandoraden:

bash test.sh

Skriptet uppmanar dig att ange ett nummer. Om du till exempel anger 15, kommer testkommandot att utvärderas till true eftersom 15 är större än 10, och echo inuti then klausul kommer att köras.

The variable is greater than 10.

if..else uttalande

Bash if..else uttalandet har följande form:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Om TEST-COMMAND utvärderas till True kommer STATEMENTS1 att STATEMENTS1 . Annars, om TEST-COMMAND returnerar False , kommer STATEMENTS2 att STATEMENTS2 . Du kan bara ha en else klausul i uttalandet.

Låt oss lägga till en else klausul till föregående exempelskript:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else uttalande

Bash if..elif..else uttalandet har följande form:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Om TEST-COMMAND1 utvärderas till True kommer STATEMENTS1 att STATEMENTS1 . Om TEST-COMMAND2 utvärderas till True kommer STATEMENTS2 att STATEMENTS2 . Om ingen av testkommandona utvärderas till True , STATEMENTS2 .

Du kan ha en eller flera klausuler i uttalandet. Den else klausulen är valfri.

Betingelserna utvärderas i följd. När ett villkor återgår är de återstående villkoren inte utförda och programkontrollen flyttas till slutet av if uttalanden.

Låt oss lägga till en elif klausul till det föregående skriptet:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Häckt if uttalanden

Bash låter dig häcka if uttalanden inom if uttalanden. Du kan placera flera if uttalanden i en annan if uttalande.

Följande skript uppmanar dig att ange tre siffror och skriva ut det största numret bland de tre numren.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Så här ser utprodukten ut:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. I stället för att använda kapslade if uttalanden, är det vanligtvis mer effektivt att använda ärendeklarationen.

Flera villkor

De logiska OR och AND operatörerna låter dig använda flera villkor i if uttalanden.

Här är en annan version av skriptet för att skriva ut det största numret bland de tre siffrorna. I den här versionen kommer vi att använda den logiska AND ( && ) operatören i stället för de kapslade if uttalanden.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Testoperatörer

I Bash tar testkommandot en av följande syntaxformer:

test EXPRESSION]

För att negera testuttrycket använder du den logiska NOT ( ! ) Operatören. Vid jämförelse av strängar ska du alltid använda enstaka eller dubbla citat för att undvika problem med orddelning eller glödande.

Nedan följer några av de mest använda operatörerna:

  • -n VAR - Sant om längden på VAR är större än noll. -z VAR - Sant om VAR är tom. STRING1 = STRING2 - Sant [STRING1 och STRING2 är lika. STRING1 != STRING2 - True STRING1 och STRING2 är inte lika. INTEGER1 -eq INTEGER2 - True INTEGER1 och INTEGER2 är lika. INTEGER1 -gt INTEGER2 - True INTEGER1 är större än INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 är mindre än INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 är lika eller större än INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 är lika eller mindre än INTEGER2. -h FILE - Sant om FILEN finns och är en symbolisk länk. -r FILE - Sant om FILEN finns och är läsbar. -w FILE - Sant om FILEN finns och är skrivbar. -x FILE - Sant om FILEN finns och är körbar. -d FILE - Sant om FILEN finns och är en katalog. -e FILE - Sant om FILEN finns och är en fil, oavsett typ (nod, katalog, socket, etc.). -f FILE - Sant om FILEN finns och är en vanlig fil (inte en katalog eller enhet).

Slutsats

if..else if , if..else och if..elif..else tillåter dig att kontrollera flödet av Bash-skriptets exekvering genom att utvärdera givna villkor.

bash terminal