In deze tutorial zullen we u de basisprincipes van het Bash if statement laten zien en u laten zien hoe u het in uw shell scripts kunt gebruiken.

besluitvorming is een van de meest fundamentele concepten van computerprogrammering. Zoals in elke andere programmeertaal kunnenif,if..else,if..elif..else en genesteif statements in Bash worden gebruikt om code uit te voeren op basis van een bepaalde voorwaarde.,

if Statement #

Bash if conditionals kunnen verschillende vormen hebben. Het meest basale if statement neemt de volgende vorm aan:

if TEST-COMMANDthen STATEMENTSfi

de if statement begint met het if trefwoord gevolgd door de voorwaardelijke expressie en de then trefwoord. Het statement eindigt met hetfi sleutelwoord.,

als de TEST-COMMAND evalueert tot True, wordt de STATEMENTS uitgevoerd. Als TEST-COMMAND False geeft, gebeurt er niets, de STATEMENTS wordt genegeerd.

in het algemeen is het een goede gewoonte om je code altijd te inspringen en code blokken te scheiden met lege regels. De meeste mensen kiezen voor 4-spatie of 2-spatie inspringen. Inkepingen en lege regels maken uw code leesbaarder en beter georganiseerd.,

laten we eens kijken naar het volgende voorbeeld script dat controleert of een gegeven getal groter is dan 10:

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

sla de code op in een bestand en voer het uit vanaf de opdrachtregel:

bash test.sh

Het script zal u vragen om een getal in te voeren. Als u bijvoorbeeld 15 invoert, zal de opdracht test evalueren naar true omdat 15 groter is dan 10, en de opdracht echo binnen de opdracht then worden uitgevoerd.

The variable is greater than 10.

if..,else Statement #

De Bash if..else statement neemt de volgende vorm aan:

if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi

als de TEST-COMMAND evalueert naar True, de STATEMENTS1 zal worden uitgevoerd. Anders, als TEST-COMMAND False geeft, zal STATEMENTS2 worden uitgevoerd. U kunt slechts één else clausule in het statement hebben.,

laten we een else clausule toevoegen aan het vorige voorbeeld script:

Als u de code uitvoert en een getal invoert, zal het script een ander bericht afdrukken op basis van of het getal groter of kleiner is / gelijk aan 10.

indien..elif..else Statement #

De Bash if..elif..else statement neemt de volgende vorm aan:

if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi

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

u kunt een of meer elif clausules in het statement hebben. Deelse clausule is optioneel.

de voorwaarden worden achtereenvolgens geëvalueerd., Zodra een voorwaarde True geeft, worden de overige voorwaarden niet uitgevoerd en wordt het programmabesturing verplaatst naar het einde van de if statements.

laten we een elif clausule toevoegen aan het vorige script:

Genest als Statements #

Bash u toestaat om if statements binnen if statements te nestelen. U kunt meerdere if statement in een ander if statement plaatsen.,

het volgende script zal u vragen om drie getallen in te voeren en zal het grootste getal van de drie getallen afdrukken.

Hier is hoe de uitvoer eruit zal zien:

Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
over het algemeen is het efficiënter om decasestatement te gebruiken in plaats van genesteif statement.

meerdere voorwaarden #

de logische OR en AND operators staan u toe om meerdere voorwaarden te gebruiken in de if statements.,

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

Testoperators #

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

test EXPRESSION]

om het script draagbaar te maken, gebruik liever de oude test [ commando dat beschikbaar is op alle POSIX granaten., De nieuwe verbeterde versie van detest Commando[[ (dubbele haakjes) wordt ondersteund op de meeste moderne systemen met Bash, Zsh en Ksh als standaard shell.

om de testexpressie te ontkennen, gebruikt u de logischeNOT (!) operator. Bij het vergelijken van strings , Gebruik altijd enkele of dubbele aanhalingstekens om te voorkomen dat woord splitsen en globbing problemen.,

hieronder zijn enkele van de meest gebruikte operators:

  • -n VAR – True als de lengte van VAR groter is dan nul.
  • -z VAR – waar als de VAR leeg is.
  • STRING1 = STRING2 – True als STRING1 en STRING2 gelijk zijn.
  • STRING1 != STRING2 – waar indien STRING1 en STRING2 niet gelijk zijn.,
  • INTEGER1 -eq INTEGER2 – True if INTEGER1 and INTEGER2 are equal.
  • INTEGER1 -gt INTEGER2 – True if INTEGER1 is greater than INTEGER2.
  • INTEGER1 -lt INTEGER2 – True if INTEGER1 is less than INTEGER2.
  • INTEGER1 -ge INTEGER2 – True if INTEGER1 is equal or greater than INTEGER2.
  • INTEGER1 -le INTEGER2 – True if INTEGER1 is equal or less than INTEGER2.,
  • -h FILE – True if the FILE exists and is a symbolic link.
  • -r FILE – True if the FILE exists and is readable.
  • -w FILE – True if the FILE exists and is writable.
  • -x FILE – True if the FILE exists and is executable.,
  • -d FILE – True als de FILE bestaat en een map is.
  • -e FILE – True als de FILE bestaat en een bestand is, ongeacht het type (node, directory, socket, etc.).
  • -f FILE – True als de FILE bestaat en een normaal bestand is (geen map of apparaat).,

conclusie #

deif,if..else enif..elif..else statements stellen u in staat om de flow van de uitvoering van het Bash-script te controleren door bepaalde voorwaarden te evalueren.