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.
case
statement 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 vanVAR
groter is dan nul. -
-z
VAR
– waar als deVAR
leeg is. -
STRING1 = STRING2
– True alsSTRING1
enSTRING2
gelijk zijn. -
STRING1 != STRING2
– waar indienSTRING1
enSTRING2
niet gelijk zijn., -
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
exists and is executable., -
-d
FILE
– True als deFILE
bestaat en een map is. -
-e
FILE
– True als deFILE
bestaat en een bestand is, ongeacht het type (node, directory, socket, etc.). -
-f
FILE
– True als deFILE
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.