I denne tutorial, vil vi lede dig gennem de grundlæggende principper for Bash if
erklæring og vise dig, hvordan du bruger det i din shell-scripts.
beslutningstagning er et af de mest grundlæggende begreber inden for computerprogrammering. Som i andre programmeringssprog, if
if..else
if..elif..else
og indlejrede if
erklæringer i Bash kan bruges til at udføre kode, der er baseret på en bestemt tilstand.,
hvis erklæring #
Bash if
betingelser kan have forskellige former. De mest basale if
erklæring tager følgende form:
if TEST-COMMANDthen STATEMENTSfi
if
erklæring, der starter med if
søgeord efterfulgt af den betingede udtryk og then
søgeord. Udsagnet slutter med fi
nøgleord.,
Hvis TEST-COMMAND
evaluerer til True
, bliver STATEMENTS
udført. Hvis TEST-COMMAND
returnerer False
, sker der intet, STATEMENTS
bliver ignoreret.
generelt er det en god praksis at altid indrykke din kode og adskille kodeblokke med tomme linjer. De fleste mennesker vælger at bruge enten 4-plads eller 2-plads indrykning. Fordybninger og tomme linjer gør din kode mere læsbar og organiseret.,
Lad os se på følgende eksempel på et script, der checker, om et givet tal er større end 10:
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
Gemme kode i en fil og køre den fra kommandolinjen:
bash test.sh
scriptet vil bede dig om at indtaste et nummer. Hvis, for eksempel, at du indtaster 15 test
kommando vil vurdere, at true
fordi 15 er større end 10, og den echo
kommando inde i then
bestemmelse vil blive gennemført.
The variable is greater than 10.
hvis..,ellers Erklæring #
Bash if..else
erklæring tager følgende form:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
Hvis TEST-COMMAND
giver True
STATEMENTS1
vil blive henrettet. Ellers, hvis TEST-COMMAND
returnerer False
, vil STATEMENTS2
blive udført. Du kan kun have enelse
klausul i erklæringen.,
lad os tilføje en else
klausul til det forrige eksempel script:
Hvis du kører koden og indtaster et tal, udskriver scriptet en anden meddelelse baseret på, om antallet er større eller mindre / lig med 10.
hvis..elif..ellers Erklæring #
Bash if..elif..else
erklæring tager følgende form:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
Hvis TEST-COMMAND1
giver True
STATEMENTS1
vil blive henrettet., Hvis TEST-COMMAND2
evaluerer til True
, vil STATEMENTS2
blive udført. Hvis ingen af testkommandoerne vurderer til True
, udføres STATEMENTS2
.
Du kan have en eller flere elif
klausuler i erklæringen. else
klausul er valgfri.
betingelserne evalueres sekventielt., Når en betingelse vender tilbage True
de resterende betingelser udføres ikke, Og programkontrol bevæger sig til slutningen af if
udsagn.
Lad os tilføje en elif
klausul, at den tidligere script:
Indlejrede if-Sætninger #
Bash giver dig mulighed for at rede if
sætninger i if
erklæringer. Du kan placere flere if
erklæring inde i en anden if
erklæring.,
følgende script vil bede dig om at indtaste tre tal og vil udskrive det største antal blandt de tre tal.
Her er, hvordan resultatet vil se ud som dette:
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case
erklæring i stedet indlejrede if
erklæringer.Flere Betingelser #
Den logiske OR
og AND
operatører, der giver dig mulighed for at bruge flere forhold i if
erklæringer.,
Her er en anden version af scriptet til at udskrive det største antal blandt de tre tal. I denne version, i stedet for den indlejrede if
erklæringer, vi bruger den logiske AND
(&&
) operatør.
Test Operatører #
I Bash, test
kommandoen tager et af følgende syntaks former:
test EXPRESSION]
for At gøre det script, bærbare, foretrækker at bruge den gamle test [
kommando, som er tilgængelig på alle POSIX-skaller., Den nye opgraderede version af test
kommandoen [[
(dobbelt parentes) understøttes på de fleste moderne systemer, der anvender Bash, Zsh, og Ksh som en default shell.
for At ophæve test udtryk, skal du bruge den logiske NOT
(!
) operatør. Når du sammenligner strenge, skal du altid bruge enkelt-eller dobbelt citater for at undgå ordopdeling og globbing-problemer.,
Nedenfor er nogle af de mest almindeligt anvendte operatorer:
-
-n
VAR
– True, hvis længdeVAR
er større end nul. -
-z
VAR
– True, hvisVAR
er tom. -
STRING1 = STRING2
– True, hvisSTRING1
ogSTRING2
, der er ens. -
STRING1 != STRING2
– True, hvisSTRING1
ogSTRING2
ikke lig med., -
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
– sand hvisFILE
findes og er en mappe. -
-e
FILE
– True, hvisFILE
eksisterer og er en fil, uanset type (node, bibliotek, stik, osv.). -
-f
FILE
– True, hvisFILE
findes og er en almindelig fil (ikke en mappe eller enhed).,
Konklusion #
if
if..else
og if..elif..else
erklæringer giver dig mulighed for at styre strømmen af Bash script ‘ s udførelse af en evaluering af givne betingelser.