Android

Bash if..else statement

Shell Scripting - If & If/else

Shell Scripting - If & If/else

Inhoudsopgave:

Anonim

Besluitvorming is een van de meest fundamentele concepten van computerprogrammering. Net als in elke andere programmeertaal, if , if..else , if..elif..else en genest if statements in Bash kunnen worden gebruikt om code uit te voeren op basis van een bepaalde voorwaarde.

In deze tutorial zullen we je door de basisprincipes van de Bash if instructies leiden en laten zien hoe je ze kunt gebruiken in je shellscripts.

if verklaring

Bash if conditionals verschillende vormen kunnen hebben. De meest elementaire if instructie heeft de volgende vorm:

if TEST-COMMAND then STATEMENTS fi

De instructie if begint met het sleutelwoord if gevolgd door de voorwaardelijke uitdrukking en het sleutelwoord then . De instructie eindigt met het trefwoord fi .

Als de TEST-COMMAND evalueert naar True , worden de STATEMENTS uitgevoerd. Als TEST-COMMAND False retourneert, gebeurt er niets, de STATEMENTS worden genegeerd.

Over het algemeen is het een goede gewoonte om uw code altijd in te laten springen en codeblokken met lege regels te scheiden. De meeste mensen kiezen voor inspringen met 4 of 2 spaties. Inspringen en lege regels maken uw code leesbaarder en overzichtelijker.

Laten we het volgende voorbeeldscript bekijken dat controleert of een bepaald getal groter is dan 10.

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

Sla de code op in een bestand en voer deze uit vanaf de opdrachtregel:

bash test.sh

Het script vraagt ​​u om een ​​nummer in te voeren. Als u bijvoorbeeld 15 invoert, wordt het test geëvalueerd als true omdat 15 groter is dan 10 en wordt het echo commando in de then clausule uitgevoerd.

The variable is greater than 10.

if..else Verklaring

De instructie Bash if..else heeft de volgende vorm:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Als de TEST-COMMAND evalueert naar True , worden STATEMENTS1 uitgevoerd. Als anders TEST-COMMAND False retourneert, worden STATEMENTS2 uitgevoerd. U kunt slechts één else clausule in de verklaring opnemen.

Laten we een else clausule toevoegen aan het vorige voorbeeldscript:

#!/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 Verklaring

De instructie Bash if..elif..else heeft de volgende vorm:

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

Als de TEST-COMMAND1 naar True evalueert, wordt STATEMENTS1 uitgevoerd. Als de TEST-COMMAND2 naar True evalueert, wordt STATEMENTS2 uitgevoerd. Als geen van de testopdrachten worden geëvalueerd als True , wordt STATEMENTS2 uitgevoerd.

U kunt een of meer elif clausules in de verklaring hebben. De clausule else is optioneel.

De omstandigheden worden opeenvolgend geëvalueerd. Zodra een voorwaarde True retourneert, worden de resterende voorwaarden niet uitgevoerd en wordt de programmabesturing naar het einde van de if instructies verplaatst.

Laten we een elif clausule toevoegen aan het vorige script:

#!/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

Genest if verklaringen

Met Bash kun je if instructies nesten in if instructies. U kunt meerdere if instructies in een andere if instructie plaatsen.

In het volgende script wordt u gevraagd drie cijfers in te voeren en wordt het grootste nummer van de drie cijfers afgedrukt.

#!/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

Zo ziet de uitvoer eruit:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. In plaats van geneste if instructies te gebruiken, is het meestal efficiënter om de case-instructie te gebruiken.

Meerdere voorwaarden

Met de logische operatoren OR en AND kunt u meerdere voorwaarden in de if instructies gebruiken.

Hier is een andere versie van het script om het grootste aantal van de drie nummers af te drukken. In deze versie gebruiken we de logische operator AND ( && ) in plaats van de geneste if instructies.

#!/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

Test operators

In Bash neemt de test een van de volgende syntaxisvormen aan:

test EXPRESSION]

Gebruik de logische operator NOT ( ! ) Om de testexpressie te negeren. Gebruik bij het vergelijken van strings altijd enkele of dubbele aanhalingstekens om problemen met het splitsen van woorden of globsen te voorkomen.

Hieronder staan ​​enkele van de meest gebruikte operators:

  • -n VAR - Waar als de lengte van VAR groter is dan nul. -z VAR - Waar als de VAR leeg is. STRING1 = STRING2 - Waar [STRING1 en STRING2 zijn gelijk. STRING1 != STRING2 - True STRING1 en STRING2 zijn niet gelijk. INTEGER1 -eq INTEGER2 - True INTEGER1 en INTEGER2 zijn gelijk. INTEGER1 -gt INTEGER2 - True INTEGER1 is groter dan INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 is minder dan INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 is gelijk aan of groter dan INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 is gelijk aan of kleiner dan INTEGER2. -h FILE - Waar als het BESTAND bestaat en een symbolische link is. -r FILE - Waar als het BESTAND bestaat en leesbaar is. -w FILE - Waar als het BESTAND bestaat en beschrijfbaar is. -x FILE - Waar als het BESTAND bestaat en uitvoerbaar is. -d FILE - Waar als het BESTAND bestaat en een map is. -e FILE - Waar als het BESTAND bestaat en een bestand is, ongeacht het type (knooppunt, map, socket, enz.). -f FILE - Waar als het BESTAND bestaat en een normaal bestand is (geen map of apparaat).

Conclusie

Met de instructies if , if..else en if..elif..else kunt u de stroom van de uitvoering van het Bash-script beheren door de gegeven voorwaarden te evalueren.

bash-terminal