Shell Scripting - If & If/else
Innholdsfortegnelse:
if
uttalelseif..else
erklæringif..elif..else
Uttalelse- Hekket
if
uttalelser - Flere forhold
- Testoperatører
- Konklusjon
Beslutningsprosesser er et av de mest grunnleggende konseptene innen dataprogrammering. Som på alle andre programmeringsspråk,
if
,
if..else
,
if..elif..else
og nestes
if
utsagn i Bash kan brukes til å utføre kode basert på en viss betingelse.
I denne opplæringen vil vi lede deg gjennom det grunnleggende i Bash
if
uttalelser og vise deg hvordan du bruker dem i skallskriptene dine.
if
uttalelse
Bash
if
balsam kan ha forskjellige former. Den mest grunnleggende
if
uttalelsen har følgende form:
if TEST-COMMAND then STATEMENTS fi
if
setningen starter med
if
nøkkelordet etterfulgt av det betingede uttrykket og det
then
søkeordet. Uttalelsen slutter med
fi
nøkkelordet.
Hvis
TEST-COMMAND
evalueres til
True
, blir
STATEMENTS
utført. Hvis
TEST-COMMAND
returnerer
False
, skjer det ingenting,
STATEMENTS
blir ignorert.
Generelt er det en god praksis å alltid innrykke koden og skille kodeblokker med blanke linjer. De fleste velger å bruke enten 4-plass eller 2-plass innrykk. Innrykk og blanke linjer gjør koden din mer lesbar og organisert.
La oss se på følgende eksemplet skript som sjekker om et gitt antall er større enn 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Lagre koden i en fil og kjør den fra kommandolinjen:
bash test.sh
Manuset ber deg om å oppgi et nummer. Hvis du for eksempel angir 15, vil testkommandoen evaluere til
true
fordi 15 er større enn 10, og
echo
kommandoen inne i
then
leddet vil bli utført.
The variable is greater than 10.
if..else
erklæring
Bash
if..else
uttalelsen har følgende form:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Hvis
TEST-COMMAND
evalueres til
True
, vil
STATEMENTS1
bli utført. Hvis ikke
TEST-COMMAND
returnerer
False
, vil
STATEMENTS2
bli utført. Du kan bare ha en
else
klausul i uttalelsen.
La oss legge til en
else
klausul til det forrige eksempelskriptet:
#!/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
Uttalelse
if..elif..else
om Bash
if..elif..else
har følgende form:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Hvis
TEST-COMMAND1
evalueres til
True
, vil
STATEMENTS1
bli utført. Hvis
TEST-COMMAND2
evalueres til
True
, vil
STATEMENTS2
bli kjørt. Hvis ingen av testkommandoene evalueres til
True
, utføres
STATEMENTS2
.
Du kan ha en eller flere
elif
ledd i uttalelsen. Den
else
klausulen er valgfri.
Betingelsene blir evaluert sekvensielt. Når en tilstand kommer tilbake er de resterende betingelsene ikke utført, og programkontrollen beveger seg til slutten av
if
setningene.
La oss legge til en
elif
klausul til det forrige manuset:
#!/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
Hekket
if
uttalelser
Bash lar deg hekke
if
uttalelser i
if
uttalelser. Du kan plassere flere
if
uttalelser i en annen
if
uttalelse.
Følgende skript ber deg om å oppgi tre tall og vil skrive ut det største tallet blant de tre tallene.
#!/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
Slik ser utgangen ut:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
I stedet for å bruke nestede
if
uttalelser, er det vanligvis mer effektivt å bruke saksuttalelsen.
Flere forhold
De logiske
OR
og
AND
operatørene lar deg bruke flere forhold i
if
uttalelsene.
Her er en annen versjon av skriptet for å skrive ut det største tallet blant de tre tallene. I denne versjonen vil vi i stedet for de nestede
if
uttalelsene bruke den logiske
AND
(& &) operatøren.
#!/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
Testoperatører
I Bash tar testkommandoen ett av følgende syntaksformer:
test EXPRESSION]
For å negere testuttrykket bruker du den logiske
NOT
(
!
) Operatøren. Når du sammenligner strenger, bruk alltid enkle eller doble anførselstegn for å unngå ordoppdeling eller kløing.
Nedenfor er noen av de mest brukte operatørene:
-
-n
VAR
- Sann hvis lengden på VAR er større enn null.-z
VAR
- Sann hvis VAR er tom.STRING1 = STRING2
- Sant [STRING1 og STRING2 er like.STRING1 != STRING2
- Ekte STRING1 og STRING2 er ikke like.INTEGER1 -eq INTEGER2
- True INTEGER1 og INTEGER2 er like.INTEGER1 -gt INTEGER2
- True INTEGER1 er større enn INTEGER2.INTEGER1 -lt INTEGER2
- True INTEGER1 er mindre enn INTEGER2.INTEGER1 -ge INTEGER2
- True INTEGER1 er lik eller større enn INTEGER2.INTEGER1 -le INTEGER2
- True INTEGER1 er lik eller mindre enn INTEGER2.-h
FILE
- Sant om FILEN eksisterer og er en symbolsk kobling.-r
FILE
- Riktig hvis FILEN eksisterer og er lesbar.-w
FILE
- Sann hvis FILEN eksisterer og kan skrives.-x
FILE
- Sann hvis FILEN eksisterer og er kjørbar.-d
FILE
- Sann hvis FILEN eksisterer og er en katalog.-e
FILE
- Sant om FILEN eksisterer og er en fil, uansett type (node, katalog, socket, etc.).-f
FILE
- Sant om FILEN eksisterer og er en vanlig fil (ikke en katalog eller enhet).
Konklusjon
Uttalelsene
if
,
if..else
og
if..else
lar deg kontrollere flyten av utførelsen av Bash-skriptet ved å evaluere gitte forhold.
Basert på "markedsforhold" og etter å ha fullført sin due diligence-prosess, besluttet Blockbuster at oppkjøpet ikke var i selskapets beste interesse, sier Jim Keyes, Blockbusters administrerende direktør og formann i en uttalelse om Tirsdag.

I februar tilbys Blockbuster så mye som 1,33 milliarder US $ for Circuit City, med prisen avhengig av en gjennomgang av sine poster. Tilbudet ser ut til å ha vært omstridt fra starten. Filmutleiefirmaet sa at det først gjorde tilbudet direkte til Circuit Citys administrerende direktør, men fikk ikke lov til å gjennomgå selskapets bøker for å fastsette en fast tilbudspris. Det gjorde tilbudet offentlig i håp om at aksjonærer kan presse selskapet til å forhandle en avtale.
"Til tross for fortsatt økonomisk usikkerhet på makronivå tror vi at utgifter til informasjonsinfrastruktur og virtuell infrastruktur teknologier vil fortsette å vokse, "sa Joe Tucci, EMCs leder, konsernsjef, i en utarbeidet uttalelse.

Salgsgevinstene økte også EMCs overskudd, med en nettoinntekt på $ 377,5 millioner, eller $ 0,18 per aksje, opp fra $ 334,4 millioner eller $ 0,16 per aksje , i fjorårets andre kvartal.
Bash-saken uttalelse

Bash case-uttalelser brukes vanligvis for å forenkle komplekse betingelser når du har flere forskjellige valg. Bruke saksuttalelse i stedet for å hekke om uttalelser vil hjelpe deg med å gjøre basskriptene dine mer leselige og enklere å vedlikeholde.