Bash je tolmač za ukazne jezike. Je privzeti tolmač ukazov v večini GNU/ Linux sistemi in je široko dostopen v različnih operacijskih sistemih. Ime je okrajšava za Bourne-Again Shell . Skriptiranje omogoča izvajanje ukazov, ki bi se sicer izvajali eno za drugo interaktivno.
V tem članku bomo razpravljali o stavku if v skriptu bash.
Izjava Bash If
Osnovna sintaksa stavka `if` v Bashu:
#!/bin/bash if [ condition ]; then # code to be executed if the condition is true fi>
Pojasnilo:
-
if [ condition ]; then>: Ta vrstica začne stavek if, wherecondition>je izraz, ki je ovrednoten. Če je pogoj resničen, je koda znotrajthen>blok se izvede. -
# code to be executed if the condition is true>: To je blok kode, ki se izvede, če je pogoj, podan v stavku if, resničen. -
fi>: To označuje konec stavka if.
Skript Bash za ugotavljanje, ali je število sodo
Sledi primer scenarij ki vas bo pozval, da vnesete številko, nato pa preveri, ali je dano število sodo.
#!/usr/bin/bash
# Ta skript pozove uporabnika, da vnese številko, preveri, ali je sodo, in ustrezno natisne sporočilo.
# Pozove uporabnika, da vnese številko
echo -n Vnesite številko:
preberi x# Preverite, ali je vneseno število sodo
če [ $((x % 2)) == 0]; potem
echo Število je sodo
biti
Pojasnilo:
-
#!/usr/bin/bash>: To je vrstica shebang, ki določa pot do tolmača Bash. Označuje, da je treba skript izvesti z uporabo Bash. -
echo -n 'Enter Number: '>: Ta vrstica natisne poziv Vnesite številko: brez znaka za novo vrstico (-n>možnost). Čaka, da uporabnik vnese številko. -
read x>: prebere uporabniški vnos in ga dodeli spremenljivkix>. -
if [ $((x % 2)) == 0 ]; then>: Ta vrstica preveri, ali je preostanek deljenega vnesenega števila (x>) za 2 je enako 0. Če je res, pomeni, da je število sodo. -
echo 'Number is Even'>: Če je pogoj v stavku if resničen, ta vrstica na konzolo natisne Number is Even.
Izhod:

Skript Bash za ugotavljanje, ali je število sodo
Opomba: Skript ne obravnava primerov, ko uporabnik vnese neštevilsko vrednost. Če uporabnik vnese neštevilsko vrednost, lahko pride do nepričakovanih rezultatov. Za reševanje tega bi lahko dodali dodatno preverjanje vnosa.
Izjava Bash if-else
Osnovna sintaksa stavka `if-else` v Bashu:
#!/bin/bash
če [ pogoj ]; potem
# koda, ki se izvede, če je pogoj resničen
drugače
# koda, ki se izvede, če je pogoj napačen
biti
Pojasnilo:
-
if [ condition ]; then>: Ta vrstica začne stavek if, wherecondition>je izraz, ki je ovrednoten. Če je pogoj resničen, je koda znotrajthen>blok se izvede. -
# code to be executed if the condition is true>: To je blok kode, ki se izvede, če je pogoj, podan v stavku if, resničen. -
else>: Če je pogoj v stavku if napačen, koda znotrajelse>blok se izvede. -
# code to be executed if the condition is false>: To je blok kode, ki se izvede, če je pogoj, podan v stavku if, napačen. -
fi>: To označuje konec stavka if-else.
Kako najti večje število s stavki if-else v skriptu Bash?
Tukaj je skript Bash, da ugotovite večje število z uporabo izjave if-else v skriptu Bash.
ROM
#!/bin/bash
# Pozove uporabnika, da vnese vrednost za xecho -n Vnesite vrednost x:
preberi xif [ $x -gt 5 ]; potem
echo x je večji od 5
drugače
echo x ni večji od 5
biti
Pojasnilo:
- #!/bin/bash : Ta vrstica se imenuje shebang in označuje, da je treba skript interpretirati in izvesti z lupino Bash.
- # Pozove uporabnika, da vnese vrednost za x : To je komentar, ki označuje namen naslednje vrstice.
- echo -n Vnesite vrednost x: : Ta vrstica natisne sporočilo Enter the value of x: terminalu, ne da bi se premaknila v naslednjo vrstico. Uporabnik bo svojo vrednost vnesel v isto vrstico.
- preberi x : Ta vrstica prebere uporabnikov vnos in ga dodeli spremenljivki 'x'.
- if [ $x -gt 5 ]; potem : To je stavek if, ki preverja, ali je vrednost 'x' večja od 5.
- $x : Predstavlja vrednost spremenljivke 'x'.
- -gt : pomeni več kot v kontekstu numerične primerjave.
- 5 : Vrednost, s katero se primerja.
- echo x je večji od 5 : Če je pogoj v prejšnji vrstici resničen, bo ta vrstica izvedena, na terminalu bo natisnjen x večji od 5.
- drugače : Če je pogoj v stavku if napačen, skript skoči na blok else.
- echo x ni večji od 5 : Ta vrstica se izvede, če vrednost 'x' ni večja od 5, tiskanje x ni večje od 5 na terminal.
- biti : To pomeni konec bloka if-else.
Izhod:

Iskanje večjega števila z uporabo if-else
Izjava Bash if-elif-else
Theif-elif-else>stavek v Bashu se uporablja za pogojno razvejanje. Omogoča vam, da določite več pogojev in izvedete različne bloke kode na podlagi ocene teh pogojev.
Osnovna sintaksa stavka `if-elif-else` v Bashu:
#!/bin/bash
if [pogoj1]; potem
# Koda, ki se izvede, če je pogoj1 resničen
elif [pogoj2]; potem
# Koda, ki se izvede, če je pogoj2 resničen
elif [pogoj3]; potem
# Koda, ki se izvede, če je pogoj3 resničen
drugače
# Koda, ki se izvede, če nobeden od pogojev ni resničen
biti
Pojasnilo:
- if [pogoj1]; potem : To je izhodišče
if-elif-else>izjava. Koda v tem bloku bo izvedena, čecondition1>je res. - # Koda, ki se izvede, če je pogoj1 resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition1>je res. - elif [pogoj2]; potem : Če
condition1>je napačen, skript prevericondition2>. čecondition2>je res, se koda v tem bloku izvede. - # Koda, ki se izvede, če je pogoj2 resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition2>je res. - elif [pogoj3]; potem : Če oboje
condition1>incondition2>so napačne, skript prevericondition3>. čecondition3>je res, se koda znotraj tega bloka izvede. - # Koda, ki se izvede, če je pogoj3 resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition3>je res. - drugače : Če nobeden od predhodnih pogojev (pogoj1, pogoj2, pogoj3 itd.) ni resničen, je koda znotraj
else>blok se izvede. - # Koda, ki se izvede, če nobeden od pogojev ni resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če nobeden od pogojev ni resničen.
- biti : To pomeni konec
if-elif-else>izjava. Beseda fi je črkovana nazaj in se uporablja za zapiranje pogojnih blokov v Bashu.
Kako ugotoviti, ali je število pozitivno, negativno ali nič z uporabo izjave `if-elif-else` v Bashu?
Razširimo kodo v zgornjem primeru, da dodamo pogoj za preverjanje nič.
#!/bin/bash
# Pozove uporabnika, da vnese številko
echo -n Vnesite številko:
preberite štif [$num -gt 0]; potem
echo $num je pozitivno število.
elif [$num -lt 0]; potem
echo $num je negativno število.
drugače
echo $num je nič.
biti
Pojasnilo:
- #!/bin/bash : Ta vrstica je shebang, ki označuje, da je treba skript interpretirati in izvesti z lupino Bash.
- # Pozove uporabnika, da vnese številko : To je komentar, ki označuje namen naslednje vrstice.
- echo -n Vnesite številko: : Ta vrstica natisne sporočilo Enter a number: na terminal, ne da bi se premaknila v naslednjo vrstico. Uporabnik bo svojo številko vnesel v isto vrstico.
- preberite št : Ta vrstica prebere uporabnikov vnos in ga dodeli spremenljivki 'num'.
- if [$num -gt 0]; potem : To je stavek if, ki preverja, ali je vrednost 'num' večja od 0.
- $num : Predstavlja vrednost spremenljivke 'num'.
- -gt : pomeni več kot v kontekstu numerične primerjave.
- 0 : Vrednost, s katero se primerja.
- echo $num je pozitivno število. : Če je pogoj v prejšnji vrstici resničen, bo ta vrstica izvedena, izpis $num je pozitivno število. do terminala.
- elif [$num -lt 0]; potem : Če je pogoj v stavku if napačen, ta vrstica preveri, ali je vrednost 'num' manjša od 0.
- $num : Predstavlja vrednost spremenljivke 'num'.
- -Lt : pomeni manj kot v kontekstu numerične primerjave.
- 0 : Vrednost, s katero se primerja.
- echo $num je negativno število. : Če je pogoj v stavku elif resničen, bo ta vrstica izvedena, natis $num je negativno število. do terminala.
- drugače : Če sta oba pogoja v stavkih if in elif napačna, skript skoči na blok else.
- echo $num je nič. : Ta vrstica se izvede, če vrednost 'num' ni večja od 0 in ne manjša od 0, izpis $num je nič. do terminala.
- biti : To pomeni konec bloka if-elif-else.
Izhod:

če je število pozitivno, negativno ali nič z uporabo 'if-elif-else'.
Bash Ugnezdeni stavek if
V Bashu lahko uporabite ugnezdenoif>stavkov za ustvarjanje bolj zapletenih pogojnih struktur. Tukaj je sintaksa za ugnezdenoif>izjava:
#!/bin/bash
if [pogoj1]; potem
# Koda, ki se izvede, če je pogoj1 resničen
if [pogoj2]; potem
# Koda, ki se izvede, če je pogoj2 resničen
drugače
# Koda, ki se izvede, če je pogoj2 napačen
biti
drugače
# Koda, ki se izvede, če je pogoj1 napačen
biti
Pojasnilo:
java if else stavek
- if [pogoj1]; potem : To je zunanjost
if>izjava. čecondition1>je res, se koda znotraj tega bloka izvede. - # Koda, ki se izvede, če je pogoj1 resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition1>je res. - if [pogoj2]; potem : Znotraj bloka zunanjega
if>izjava, obstaja notranjaif>izjava. čecondition2>je res, se koda znotraj tega bloka izvede. - # Koda, ki se izvede, če je pogoj2 resničen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition2>je res. - drugače : Če
condition2>v notranjemif>izjava je napačna, koda znotrajelse>blok notranjegaif>stavek se izvede. - # Koda, ki se izvede, če je pogoj2 napačen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition2>je napačen. - biti : To označuje konec notranjega
if>izjava. - drugače : Če
condition1>v zunanjemif>izjava je napačna, koda znotrajelse>blok zunanjegaif>stavek se izvede. - # Koda, ki se izvede, če je pogoj1 napačen : Zamenjajte ta komentar z dejansko kodo, ki jo želite zagnati, če
condition1>je napačen. - biti : To označuje konec zunanjega
if>izjava.
Kako preveriti starostno upravičenost in ugodnosti za starejše v Bashu z uporabo ugnezdenih izjav If?
Nekoliko prilagodimo zgornjo kodo za uporabo ugnezdenega če.
#!/bin/bash
# Pozove uporabnika, da vnese starost
echo -n Vnesite svojo starost:
beri starostif [ $age -ge 18 ]; potem
echo Imate volilno pravico.
if [ $age -ge 65 ]; potem
echo Upravičeni ste tudi do ugodnosti za starejše občane.
drugače
echo Še niste upravičeni do ugodnosti za starejše občane.
biti
drugače
echo Še niste upravičeni do glasovanja.
biti
Pojasnilo:
- #!/bin/bash : Ta vrstica je shebang, ki označuje, da je treba skript interpretirati in izvesti z lupino Bash.
- # Pozovite uporabnika, da vnese starost : To je komentar, ki označuje namen naslednje vrstice.
- echo -n Vnesite svojo starost: : Ta vrstica natisne sporočilo Enter your age: na terminal brez premikanja v naslednjo vrstico. Uporabnik bo v isto vrstico vnesel svojo starost.
- beri starost : Ta vrstica prebere uporabnikov vnos in ga dodeli spremenljivki 'age'.
- if [ $age -ge 18 ]; potem : To je stavek if, ki preverja, ali je vrednost 'starosti' večja ali enaka 18.
- $starost : Predstavlja vrednost spremenljivke 'starost'.
- -ge : pomeni večje ali enako v kontekstu numerične primerjave.
- 18 : Vrednost, s katero se primerja.
- echo Imate volilno pravico. : Če je pogoj v prejšnji vrstici resničen, se bo ta vrstica izvršila in natisnilo Ste volilni upravičenec. do terminala.
- if [ $age -ge 65 ]; potem : Znotraj prvega bloka if je to še en stavek if, ki preverja, ali je vrednost 'starosti' večja ali enaka 65.
- $starost : Predstavlja vrednost spremenljivke 'starost'.
- -ge : pomeni večje ali enako v kontekstu numerične primerjave.
- 65 : Vrednost, s katero se primerja.
- echo Upravičeni ste tudi do ugodnosti za starejše občane. : Če je pogoj v notranjem stavku if resničen, se bo ta vrstica izvedla in natisnilo Upravičeni ste tudi do ugodnosti za starejše občane. do terminala.
- drugače : Če je pogoj v notranjem stavku if napačen, skript skoči na blok else znotraj zunanjega stavka if.
- echo Še niste upravičeni do ugodnosti za starejše občane. : Ta vrstica se izvede, če vrednost 'starost' ni večja ali enaka 65, natisnjeno Še niste upravičeni do ugodnosti za starejše občane. do terminala.
- biti : To pomeni konec notranjega bloka if-else.
- drugače : Če je pogoj v zunanjem stavku if napačen, skript skoči na blok else.
- echo Še niste upravičeni do glasovanja. : Ta vrstica se izvede, če vrednost 'starost' ni večja ali enaka 18, natisne Še niste upravičeni do glasovanja. do terminala.
- biti : To pomeni konec zunanjega bloka if-else.
Izhod:

ugnezdeno-če uporabljate Bash
Pogosta vprašanja in nekaj opomb o CONDITION
To je nekaj stvari, ki jih moram imeti v mislih, ko pišem testne pogoje v bash.
1. Zagotovite presledke med oklepaji in dejansko izjavo o preverjanju/primerjavi.
Naslednje na primer ne bo delovalo.
if [$x==0]>Bash bo sporočil napako o a manjka] .
2. Vedno končajte vrstico, preden dodate novo ključno besedo, na primer then.
Če so torej else, elif in fi vse ključne besede lupine, kar pomeni, da jih ni mogoče uporabiti v isti vrstici. Postavite ; med prejšnjim stavkom in ključno besedo ali začnite novo vrstico s ključno besedo.
kateri meseci so q1
3. Za uporabo več pogojev v enem stavku uporabite logične operatorje.
Za uporabo več pogojev lahko uporabimo logične operatorje IN(&&) ali logične ALI(||).
Na primer:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo 'x is greatest' fi>Tu je -ge okrajšava za več kot ali enako
4. Kako primerjati nize v stavku Bash if?
Uporabite ` => `>operator za enakost nizov in ` !=`> za neenakost.
Na primer:
if [ '$string1' = '$string2' ]; then # Code to execute if strings are equal else # Code to execute if strings are not equal fi>
5. Ali lahko v stavkih Bash if uporabljam regularne izraze?
Da, lahko uporabite ` [[ ... ]]`> konstrukt za naprednejše ujemanje nizov z regularnimi izrazi.
Na primer:
if [[ '$string' =~ ^[0-9]+$ ]]; then # Code to execute if the string contains only numbers else # Code to execute if the string does not contain only numbers fi>
6. Kako s stavkom if preveriti, ali datoteka obstaja v skriptu Bash?
Uporabite lahko ` -e`> zastavico v pogoju, kot je ta:
if [ -e 'filename' ]; then # Code to execute if the file exists else # Code to execute if the file does not exist fi>
7. Kakšna je sintaksa za stavek if-else v skriptih Bash?
Osnovna sintaksa za an `če-sicer` stavek v skriptih Bash je:
if [ condition ]; then # Code to execute if condition is true else # Code to execute if condition is false fi>
8. Kako uporabim stavek elif v skriptu Bash?
` elif`> stavek se uporablja za preverjanje dodatnih pogojev, če je začetniif>pogoj je napačen.
Tukaj je primer:
if [ condition1 ]; then # Code to execute if condition1 is true elif [ condition2 ]; then # Code to execute if condition2 is true else # Code to execute if none of the conditions are true fi>
9. Kako lahko uporabim logične operatorje (AND, OR) v stavkih Bash if?
Uporabite lahko ` -a`> za logični IN in ` -o`> za logični ALI.
Na primer:
if [ condition1 -a condition2 ]; then # Code to execute if both conditions are true fi>
Zaključek
V tem članku smo razpravljali o skriptiranju Bash, ki je zelo uporabno orodje, s katerim lahko vaš računalnik naredi stvari samodejno. Ta članek nas je poučil o stavku if v Bashu, ki je kot odločevalec v skriptih. Naučili smo se osnov, si ogledali primere, kot je preverjanje, ali je število sodo, ali ugotavljanje, ali lahko nekdo glasuje, in celo raziskali bolj domiselne stvari, kot je ravnanje s številnimi pogoji ali postavljanje izjav if ena v drugo. Članek je podal jasne razlage, primere in odgovore na pogosta vprašanja, ki so nam pomagali izboljšati uporabo skriptov Bash. Ključna ugotovitev je, da bodite previdni pri podrobnostih, kot so razmiki in posebna pravila, tako da naši skripti delujejo nemoteno in olajšajo izvajanje nalog v računalniku.