V tej temi bomo razumeli, kako uporabljati če izjave v skriptih Bash za dokončanje naših avtomatiziranih nalog.
Udari, če so izjave koristne. Uporabljajo se za izvajanje pogojnih nalog v zaporednem toku izvajanja stavkov. Stavki If nam običajno omogočajo sprejemanje odločitev v naših skriptih Bash. Pomagajo nam, da se odločimo, ali bomo zagnali del kod ali ne na podlagi pogoja, ki ga lahko postavimo.
omrežje in internet
Osnovne izjave if
Osnovni stavek if ukazuje, da če je določen pogoj resničen, se izvede le dani niz dejanj. Če ni res, potem ne izvajajte teh dejanj. Če izjava temelji na naslednji obliki:
Sintaksa
if [ expression ]; then statements fi
Izjava med potem in biti (Če obratno) bo izveden le, če je izraz (med oglatimi oklepaji) resničen.
Opomba:Upoštevajte presledke v prvi vrstici in podpičje na koncu prve vrstice; oboje je obvezno za uporabo.Če je pogojna izjavakonča zbiti.
- Za uporabo več pogojev z operatorjem IN:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- Za uporabo več pogojev z operatorjem ALI:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- Za sestavljene izraze z operatorjema IN & ALI lahko uporabimo naslednjo sintakso:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Sledi nekaj primerov, ki prikazujejo uporabo stavka if:
Primer 1
V tem primeru uporabite uporabniški vnos poljubne številke in preverite, ali je vrednost večja od 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Izhod
Če vnesemo številko 159, bo rezultat videti takole:
Primer 2
V tem primeru prikazujemo uporabo izjava if s preprostim scenarijem primerjave dveh nizov:
#!/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
Izhod
c oblikovani niz
Primer 3
V tem primeru prikazujemo, kako primerjati števila z uporabo stavka if:
#!/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
Izhod
Primer 4
V tem primeru bomo definirali, kako uporabiti operator IN za vključitev več pogojev v izraz if:
#!/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
Izhod
Primer 5
V tem primeru bomo definirali, kako uporabiti operator OR za vključitev več pogojev v izraz if:
#!/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
Izhod
Primer 6
V tem primeru bomo definirali, kako uporabiti IN in ALI za vključitev več pogojev v izraz if:
#!/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
Izhod
slf4j proti log4j
Možnosti za stavek If v skriptiranju Bash
Stavek If vsebuje veliko možnosti za izvedbo določene naloge. Te možnosti se lahko uporabljajo za operacije z datotekami, operacije z nizi itd. Sledi nekaj najbolj uporabljenih možnosti:
Možnosti (operatorji) | Opis |
---|---|
! IZRAZ | Če želite preveriti, ali je EXPRESSION napačen. |
-n STRING | Če želite preveriti, ali je dolžina STRING večja od nič. |
-z STRING | Če želite preveriti, ali je dolžina STRING enaka nič (tj. je prazen) |
STRING1 == STRING2 | Če želite preveriti, ali je STRING1 enako STRING2. |
STRING1 != STRING2 | Če želite preveriti, ali STRING1 ni enako STRING2. |
CELO ŠTEVILO1 -eq CELO ŠTEVILO2 | Če želite preveriti, ali je INTEGER1 številčno enako INTEGER2. |
CELO ŠTEVILO1 -gt CELO ŠTEVILO2 | Če želite preveriti, ali je INTEGER1 številčno večje od INTEGER2. |
CELO ŠTEVILO1 -lt CELO ŠTEVILO2 | Če želite preveriti, ali je INTEGER1 številčno manjši od INTEGER2. |
-d DATOTEKA | Če želite preveriti, ali FILE obstaja in je imenik. |
-e DATOTEKA | Če želite preveriti, ali FILE obstaja. |
-r DATOTEKA | Če želite preveriti, ali FILE obstaja in ali je dovoljenje za branje odobreno. |
-s DATOTEKA | Za preverjanje, ali FILE obstaja in je njena velikost večja od nič (kar pomeni, da ni prazna). |
-w DATOTEKA | Če želite preveriti, ali FILE obstaja in ali je dovoljenje za pisanje odobreno. |
x DATOTEKA | Za preverjanje, ali FILE obstaja in ali je dovoljenje za izvajanje odobreno. |
Ugnezdeni Če
Znotraj skripta bash lahko uporabite poljubno število stavkov if. Stavek if je mogoče uporabiti tudi znotraj drugega 'stavka if'. Znan je kot ugnezdeni stavek If.
Primer
V tem primeru bomo z uporabo ugnezdenega izraza if ugotovili, ali je dano število večje od 50 in ali je sodo število.
#!/bin/bash #Nested if statement if [ -gt 50 ] then echo 'Number is greater than 50.' if (( % 2 == 0 )) then echo 'and it is an even number.' fi fi
Izhod
Če vnesemo vrednost argumenta kot 100, bo rezultat videti tako:
Zaključek
V tej temi smo razpravljali o tem, kako bi lahko uporabili pogojno razvejanje v zaporednem toku izvajanja stavkov s stavkom bash if.