I denne opplæringen, vil vi veilede deg gjennom grunnleggende av Bash if
uttalelse og viser deg hvordan du kan bruke det i ditt shell-skript.
avgjørelser er en av de mest grunnleggende begrepene i programmering. Som i andre programmeringsspråk, if
, if..else
, if..elif..else
og nestede if
uttalelser i Bash kan brukes til å kjøre kode basert på en bestemt tilstand.,
hvis Uttalelse #
Bash if
conditionals kan ha forskjellige former. Den mest grunnleggende if
uttalelse tar følgende form:
if TEST-COMMANDthen STATEMENTSfi
if
uttalelse starter med if
nøkkelord etterfulgt av den betingede uttrykk og then
søkeord. Uttalelsen avsluttes med fi
søkeord.,
Hvis TEST-COMMAND
beregner True
, STATEMENTS
blir utført. Hvis TEST-COMMAND
tilbake False
, skjer det ingenting, STATEMENTS
blir ignorert.
generelt er det en god vane å alltid rykke inn koden din og separat kode blokker med tomme linjer. De fleste velge å bruke enten 4-plass eller 2-plass innrykk. Fordypninger og blanke linjer for å gjøre koden mer lesbar og organisert.,
La oss se på følgende eksempel skript som sjekker om et gitt antall er større enn 10:
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
Lagre koden i en fil og kjøre det fra kommandolinjen:
bash test.sh
skriptet vil be deg om å angi et nummer. Hvis du for eksempel inn 15, test
– kommandoen vil vurdere å true
fordi 15 er større enn 10 og echo
– kommandoen inne i then
klausulen vil bli utført.
The variable is greater than 10.
om..,andre Uttalelse #
Bash if..else
uttalelse tar følgende form:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
Hvis TEST-COMMAND
beregner True
, STATEMENTS1
vil bli utført. Ellers, hvis TEST-COMMAND
tilbake False
, STATEMENTS2
vil bli utført. Du kan bare ha en else
punkt i uttalelsen.,
La oss legge til en else
klausulen til forrige eksempel manus:
Hvis du kjører koden, og angi et nummer, vil skriptet skriver ut en annen melding, basert på om antallet er større eller mindre/lik 10.
om..elif..andre Uttalelse #
Bash if..elif..else
uttalelse tar følgende form:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
Hvis TEST-COMMAND1
beregner True
, STATEMENTS1
vil bli utført., Hvis TEST-COMMAND2
beregner True
, STATEMENTS2
vil bli utført. Hvis ingen av de midlertidige vurdere å True
, STATEMENTS2
er utført.
Du kan ha en eller flere elif
punktene i erklæringen. else
klausulen er valgfritt.
De vilkår som er evaluert fortløpende., Når en tilstand som returnerer True
de øvrige vilkårene ikke er utført og programmet kontroll flytter til slutten av if
uttalelser.
La oss legge til en elif
klausulen til tidligere script:
Nestede hvis Uttalelser #
Bash gir deg mulighet til å hekke if
uttalelser innenfor if
uttalelser. Du kan plassere flere if
uttalelse i en annen if
uttalelse.,
følgende skript vil be deg om å oppgi tre tall og skriver ut det største antallet blant de tre tallene.
Her er hvordan produksjonen vil se slik ut:
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case
uttalelse i stedet nestede if
uttalelser.Flere Forhold #
Den logiske OR
og AND
operatører, kan du bruke flere forhold i if
uttalelser.,
Her er en annen versjon av skriptet for å skrive ut det største antallet blant de tre tallene. I denne versjonen, i stedet for nestede if
uttalelser, bruker vi den logiske AND
(&&
) operatør.
Test Operatører #
I Bash, test
– kommandoen tar du ett av følgende syntaks former:
test EXPRESSION]
for Å gjøre skriptet bærbar, foretrekker å bruke den gamle test [
– kommandoen som er tilgjengelig på alle POSIX-skjell., Den nye oppgraderte versjonen av test
kommandoen [[
(dobbel parentes) støttes av de fleste moderne systemer bruker Bash, Zsh, og Ksh som en standard shell.
for Å gjøre testen uttrykk, kan du bruke den logiske NOT
(!
) operatør. Ved sammenligning av strenger , må du alltid bruke enkle eller doble anførselstegn for å unngå ordet splitting og globbing problemer.,
Nedenfor er noen av de mest brukte operatører:
-
-n
VAR
– Sann hvis lengden påVAR
er større enn null. -
-z
VAR
– Sann hvisVAR
er tom. -
STRING1 = STRING2
– Sann hvisSTRING1
ogSTRING2
er like. -
STRING1 != STRING2
– Sann hvisSTRING1
ogSTRING2
er ikke like., -
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
– Sann hvisFILE
eksisterer og er en katalog. -
-e
FILE
– Sann hvisFILE
eksisterer og er en fil, uavhengig av type (node, katalog, kontakt, etc.). -
-f
FILE
– Sann hvisFILE
eksisterer og er en vanlig fil (ikke en katalog eller enhet).,
Konklusjon #
if
, if..else
og if..elif..else
uttalelser tillate deg å kontrollere flyten av Bash-script ‘ s gjennomføring av evaluering gitt forhold.