I dette emne vil vi forstå, hvordan man bruger hvis udsagn i Bash-scripts for at få vores automatiserede opgaver udført.
Bash hvis udsagn er gavnlige. De bruges til at udføre betingede opgaver i det sekventielle flow af udførelse af sætninger. Hvis udtalelser normalt tillader os at træffe beslutninger i vores Bash-scripts. De hjælper os med at beslutte, om vi skal køre et stykke koder baseret på den betingelse, vi måtte sætte.
Grundlæggende if-udsagn
En grundlæggende if-sætning beordrer, at hvis en bestemt betingelse er sand, skal du kun udføre et givet sæt handlinger. Hvis det ikke er sandt, så lad være med at udføre disse handlinger. Hvis erklæringen er baseret på følgende format:
Syntaks
if [ expression ]; then statements fi
Udtalelsen mellem derefter og være (Hvis baglæns) vil kun blive udført, hvis udtrykket (mellem firkantede parenteser) er sandt.
Bemærk:Bemærk de mellemrum, der bruges i den første linje og et semikolon i slutningen af den første linje; begge er obligatoriske at bruge.Hvis betinget erklæringslutter medvære.
- For brug af flere betingelser med OG-operator:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- For brug af flere betingelser med OR-operator:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- For sammensatte udtryk med AND & OR-operatorer kan vi bruge følgende syntaks:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Følgende er nogle eksempler, der demonstrerer brugen af if-sætning:
Eksempel 1
I dette eksempel skal du tage et brugerinput af et hvilket som helst tal og kontrollere, om værdien er større end 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Produktion
Hvis vi indtaster tallet 159, vil outputtet se sådan ud:
Eksempel 2
I dette eksempel demonstrerer vi brugen af hvis erklæring med et simpelt scenarie for at sammenligne to strenge:
#!/bin/bash # if condition is true if [ 'myfile' == 'myfile' ]; then echo 'true condition' fi # if condition is false if [ 'myfile' == 'yourfile' ]; then echo 'false condition' fi
Produktion
Eksempel 3
I dette eksempel viser vi, hvordan man sammenligner tal ved at bruge if-sætningen:
#!/bin/bash #if condition (greater than) is true if [ 10 -gt 3 ]; then echo '10 is greater than 3.' fi #if condition (greater than) is false if [ 3 -gt 10 ]; then echo '3 is not greater than 10.' fi #if condition (lesser than) is true if [ 3 -lt 10 ]; then echo '3 is less than 10.' fi #if condition (lesser than) is false if [ 10 -lt 3 ]; then echo '10 is not less than 3.' fi #if condition (equal to) is true if [ 10 -eq 10 ]; then echo '10 is equal to 10.' fi #if condition (equal to) is false if [ 10 -eq 9 ]; then echo '10 is not equal to 9' fi
Produktion
Eksempel 4
I dette eksempel vil vi definere, hvordan man bruger AND-operatoren til at inkludere flere betingelser i if-udtrykket:
#!/bin/bash # TRUE && TRUE if [ 8 -gt 6 ] && [ 10 -eq 10 ]; then echo 'Conditions are true' fi # TRUE && FALSE if [ 'mylife' == 'mylife' ] && [ 3 -gt 10 ]; then echo 'Conditions are false' fi
Produktion
Eksempel 5
I dette eksempel vil vi definere, hvordan man bruger OR-operator til at inkludere flere betingelser i if-udtrykket:
#!/bin/bash # TRUE || FALSE if [ 8 -gt 7 ] || [ 10 -eq 3 ]; then echo ' Condition is true. ' fi # FALSE || FALSE if [ 'mylife' == 'yourlife' ] || [ 3 -gt 10 ]; then echo ' Condition is false. ' fi
Produktion
Eksempel 6
I dette eksempel vil vi definere, hvordan man bruger AND og OR til at inkludere flere betingelser i if-udtrykket:
#!/bin/bash # TRUE && FALSE || FALSE || TRUE if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]]; then echo 'Condition is true.' fi # TRUE && FALSE || FALSE if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]]; then echo 'Condition is false' fi
Produktion
Indstillinger for If-sætning i Bash Scripting
If-sætningen indeholder mange muligheder for at udføre en bestemt opgave. Disse muligheder kan bruges til filoperationer, strengoperationer osv. Følgende er nogle af de mest brugte muligheder:
Valgmuligheder (operatører) | Beskrivelse |
---|---|
! UDTRYK | For at kontrollere, om EXPRESSION er falsk. |
-n STRING | For at kontrollere, om længden af STRING er større end nul. |
-z STRING | For at kontrollere, om længden af STRING er nul (dvs. den er tom) |
STRING1 == STRING2 | For at kontrollere, om STRING1 er lig med STRING2. |
STRING1 != STRING2 | For at kontrollere, om STRING1 ikke er lig med STRING2. |
HELTAL1 -eq HELTAL2 | For at kontrollere om INTEGER1 er numerisk lig med INTEGER2. |
HELTAL1 -gt HELTAL2 | For at kontrollere, om INTEGER1 er numerisk større end INTEGER2. |
HELTAL1 -lt HELTAL2 | For at kontrollere, om INTEGER1 er numerisk mindre end INTEGER2. |
-d FIL | For at kontrollere, om FILE eksisterer, og det er en mappe. |
-e FIL | For at kontrollere om FILE eksisterer. |
-r FIL | For at kontrollere, om FIL findes, og læsetilladelsen er givet. |
-s FIL | For at kontrollere, om FIL findes, og dens størrelse er større end nul (hvilket betyder, at den ikke er tom). |
-w FIL | For at kontrollere, om FIL eksisterer, og skrivetilladelsen er givet. |
x FIL | For at kontrollere, om FILE eksisterer, og tilladelsen til udførelse er givet. |
Indlejret hvis
Du kan anvende så mange 'if-udsagn' som krævet i dit bash-script. Det er også muligt at bruge en if-sætning inde i en anden 'if-sætning'. Det er kendt som Nested If Statement.
Eksempel
I dette eksempel finder vi 'hvis et givet tal er større end 50, og hvis det er et lige tal' ved at bruge indlejret if-udtryk.
#!/bin/bash #Nested if statement if [ $1 -gt 50 ] then echo 'Number is greater than 50.' if (( $1 % 2 == 0 )) then echo 'and it is an even number.' fi fi
Produktion
Hvis vi indtaster en argumentværdi som 100, vil outputtet se sådan ud:
Konklusion
I dette emne diskuterede vi, hvordan vi kunne bruge betinget forgrening i det sekventielle flow af udførelse af udsagn med bash if-sætning.