Shell Scripting - If & If/else
Innehållsförteckning:
ifuttalandeif..elseuttalandeif..elif..elseuttalande- Häckt
ifuttalanden - Flera villkor
- Testoperatörer
- Slutsats
Beslutsfattande är ett av de mest grundläggande begreppen inom datorprogrammering. Liksom på något annat programmeringsspråk,
if
,
if..else
,
if..elif..else
och kapslade
if
uttalanden i Bash kan användas för att köra kod baserat på ett visst villkor.
I denna handledning kommer vi att leda dig genom grunderna i Bash
if
uttalanden och visa dig hur du använder dem i dina skalskript.
if
uttalande
Bash
if
balsam kan ha olika former. Det mest grundläggande
if
uttalandet har följande form:
if TEST-COMMAND then STATEMENTS fi
if
satsen börjar med
if
nyckelordet följt av det villkorade uttrycket och det
then
nyckelordet. Uttalandet slutar med
fi
nyckelordet.
Om
TEST-COMMAND
utvärderas till
True
, kommer
STATEMENTS
. Om
TEST-COMMAND
returnerar
False
, händer ingenting,
STATEMENTS
ignoreras.
I allmänhet är det en bra praxis att alltid strecksätta din kod och separera kodblock med tomma rader. De flesta väljer att använda antingen 4-rums- eller 2-rumsindragning. Indragningar och tomma rader gör din kod mer läsbar och organiserad.
Låt oss titta på följande exempelskript som kontrollerar om ett visst antal är större än 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Spara koden i en fil och kör den från kommandoraden:
bash test.sh
Skriptet uppmanar dig att ange ett nummer. Om du till exempel anger 15, kommer testkommandot att utvärderas till
true
eftersom 15 är större än 10, och
echo
inuti
then
klausul kommer att köras.
The variable is greater than 10.
if..else
uttalande
Bash
if..else
uttalandet har följande form:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Om
TEST-COMMAND
utvärderas till
True
kommer
STATEMENTS1
att
STATEMENTS1
. Annars, om
TEST-COMMAND
returnerar
False
, kommer
STATEMENTS2
att
STATEMENTS2
. Du kan bara ha en
else
klausul i uttalandet.
Låt oss lägga till en
else
klausul till föregående exempelskript:
#!/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
uttalande
Bash
if..elif..else
uttalandet har följande form:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Om
TEST-COMMAND1
utvärderas till
True
kommer
STATEMENTS1
att
STATEMENTS1
. Om
TEST-COMMAND2
utvärderas till
True
kommer
STATEMENTS2
att
STATEMENTS2
. Om ingen av testkommandona utvärderas till
True
,
STATEMENTS2
.
Du kan ha en eller flera klausuler i uttalandet. Den
else
klausulen är valfri.
Betingelserna utvärderas i följd. När ett villkor återgår är de återstående villkoren inte utförda och programkontrollen flyttas till slutet av
if
uttalanden.
Låt oss lägga till en
elif
klausul till det föregående skriptet:
#!/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
Häckt
if
uttalanden
Bash låter dig häcka
if
uttalanden inom
if
uttalanden. Du kan placera flera
if
uttalanden i en annan
if
uttalande.
Följande skript uppmanar dig att ange tre siffror och skriva ut det största numret bland de tre numren.
#!/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
Så här ser utprodukten ut:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
I stället för att använda kapslade
if
uttalanden, är det vanligtvis mer effektivt att använda ärendeklarationen.
Flera villkor
De logiska
OR
och
AND
operatörerna låter dig använda flera villkor i
if
uttalanden.
Här är en annan version av skriptet för att skriva ut det största numret bland de tre siffrorna. I den här versionen kommer vi att använda den logiska
AND
(
&&
) operatören i stället för de kapslade
if
uttalanden.
#!/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 testkommandot en av följande syntaxformer:
test EXPRESSION]
För att negera testuttrycket använder du den logiska
NOT
(
!
) Operatören. Vid jämförelse av strängar ska du alltid använda enstaka eller dubbla citat för att undvika problem med orddelning eller glödande.
Nedan följer några av de mest använda operatörerna:
-
-nVAR- Sant om längden på VAR är större än noll.-zVAR- Sant om VAR är tom.STRING1 = STRING2- Sant [STRING1 och STRING2 är lika.STRING1 != STRING2- True STRING1 och STRING2 är inte lika.INTEGER1 -eq INTEGER2- True INTEGER1 och INTEGER2 är lika.INTEGER1 -gt INTEGER2- True INTEGER1 är större än INTEGER2.INTEGER1 -lt INTEGER2- True INTEGER1 är mindre än INTEGER2.INTEGER1 -ge INTEGER2- True INTEGER1 är lika eller större än INTEGER2.INTEGER1 -le INTEGER2- True INTEGER1 är lika eller mindre än INTEGER2.-hFILE- Sant om FILEN finns och är en symbolisk länk.-rFILE- Sant om FILEN finns och är läsbar.-wFILE- Sant om FILEN finns och är skrivbar.-xFILE- Sant om FILEN finns och är körbar.-dFILE- Sant om FILEN finns och är en katalog.-eFILE- Sant om FILEN finns och är en fil, oavsett typ (nod, katalog, socket, etc.).-fFILE- Sant om FILEN finns och är en vanlig fil (inte en katalog eller enhet).
Slutsats
if..else
if
,
if..else
och
if..elif..else
tillåter dig att kontrollera flödet av Bash-skriptets exekvering genom att utvärdera givna villkor.
Baserat på marknadsvillkoren och efter att ha avslutat sin due diligence-process beslutade Blockbuster att förvärvet inte var i företagets bästa intresse, säger Jim Keyes, Blockbusters VD och ordförande i ett uttalande om Tisdag.
I februari erbjöd Blockbuster så mycket som 1,33 miljarder US-dollar för Circuit City, med priset beroende på en granskning av sina poster. Erbjudandet verkar ha varit omstridt från början. Filmuthyrningsföretaget sa att det först gjorde erbjudandet direkt till Circuit Citys VD men fick inte granska bolagets böcker för att fastställa ett fast anbudspris. Det gjorde erbjudandet offentligt i hopp om att aktieägarna skulle kunna pressa företaget att förhandla fram en överenskommelse.
"Trots fortsatt ekonomisk osäkerhet på makronivå tror vi att utgifterna för informationsinfrastruktur och virtuell infrastruktursteknik kommer att fortsätta växa, "säger Joe Tucci, EMC: s ordförande, VD och koncernchef, i ett uttalat uttalande.
Försäljningsvinsterna ökade också EMC: s vinst, med en nettoinkomst på 377,5 miljoner dollar, eller 0,18 dollar per aktie, från 334,4 miljoner dollar eller 0,16 USD per aktie , i fjolårets andra kvartal.
Bash fall uttalande
Bash case-uttalanden används vanligtvis för att förenkla komplexa villkor när du har flera olika val. Använda ärendeuttalande istället för att kapsla om uttalanden hjälper dig att göra dina basskript mer läsbara och lättare att underhålla.







