Shell Scripting - If & If/else
Inhoudsopgave:
ifverklaringif..elseVerklaringif..elif..elseVerklaring- Genest
ifverklaringen - Meerdere voorwaarden
- Test operators
- Conclusie
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:
-
-nVAR- Waar als de lengte van VAR groter is dan nul.-zVAR- 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.-hFILE- Waar als het BESTAND bestaat en een symbolische link is.-rFILE- Waar als het BESTAND bestaat en leesbaar is.-wFILE- Waar als het BESTAND bestaat en beschrijfbaar is.-xFILE- Waar als het BESTAND bestaat en uitvoerbaar is.-dFILE- Waar als het BESTAND bestaat en een map is.-eFILE- Waar als het BESTAND bestaat en een bestand is, ongeacht het type (knooppunt, map, socket, enz.).-fFILE- 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.
Microsoft Research Asia host poorten op 10 jaar Bash
Microsoft Research Asia is in 1998 van een dozijn mensen gegroeid tot meer dan 350 een decennium later.
Windows 7.5 Mango-apps ontwikkelen, deel 4: if statement
Dit hoofdstuk beschrijft hoe de "if" -instructie moet worden gebruikt en wat de typen zijn .
Bash uitvoeren op Ubuntu op Windows 10
Als u Windows Subsystem voor Linux inschakelt, kunt u Bash op Ubuntu uitvoeren op Windows 10, Bash-scripts , Linux-opdrachtregelprogramma`s, Linux-eerste hulpprogramma`s.







