„Bash“ scenarijus – „If“ pareiškimas
Bash yra komandų kalbų vertėjas. Tai yra numatytasis komandų interpretatorius daugumoje GNU/ Linux sistemos ir yra plačiai prieinama įvairiose operacinėse sistemose. Pavadinimas yra santrumpa Bourne-Again SHell . Scenarijų sudarymas leidžia vykdyti komandas, kurios kitu atveju būtų vykdomos po vieną interaktyviai.
Šiame straipsnyje aptarsime „if“ teiginį „bash“ scenarijuose.
Bash If pareiškimas
Pagrindinė „if“ teiginio Bash sintaksė:
#!/bin/bash if [ condition ]; then # code to be executed if the condition is true fi
Paaiškinimas:
-
if [ condition ]; then>: ši eilutė pradeda teiginį if, kurcondition>yra vertinama išraiška. Jei sąlyga teisinga, kodas vidujethen>blokas vykdomas. -
# code to be executed if the condition is true>: Tai yra kodo blokas, kuris vykdomas, jei if sakinyje nurodyta sąlyga yra teisinga. -
fi>: tai žymi if teiginio pabaigą.
Bash scenarijus, skirtas nustatyti, ar skaičius yra lyginis
Toliau pateikiamas pavyzdys scenarijus paragins įvesti skaičių ir tada patikrins, ar nurodytas skaičius yra lyginis.
#!/usr/bin/bash
# Šis scenarijus ragina vartotoją įvesti skaičių, patikrina, ar jis lygus, ir atitinkamai išspausdina pranešimą.
# Paraginkite vartotoją įvesti numerįecho -n Įveskite numerį:
skaityti x# Patikrinkite, ar įvestas skaičius yra lyginis
jei [ $((x % 2)) == 0 ]; tada
Echo skaičius yra lyginis
būti
Paaiškinimas:
-
#!/usr/bin/bash>: Tai shebang eilutė, nurodanti kelią į Bash interpretatorių. Tai rodo, kad scenarijus turi būti vykdomas naudojant Bash. -
echo -n 'Enter Number: '>: Ši eilutė spausdina raginimą Įveskite numerį: be naujos eilutės simbolio (-n>variantas). Jis laukia, kol vartotojas įves numerį. -
read x>: nuskaito vartotojo įvestį ir priskiria ją kintamajamx>. -
if [ $((x % 2)) == 0 ]; then>: Ši eilutė patikrina, ar likusi įvesto skaičiaus padalijimo dalis (x>) iš 2 yra lygus 0. Jei tiesa, tai reiškia, kad skaičius lyginis. -
echo 'Number is Even'>: Jei sąlyga if sakinyje yra teisinga, šioje eilutėje konsolėje išspausdinamas skaičius lyginis.
Išvestis:
Bash scenarijus, skirtas nustatyti, ar skaičius yra lyginis
Pastaba: Scenarijus neapdoroja atvejų, kai vartotojas įveda ne skaitinę reikšmę. Jei vartotojas įveda ne skaitinę reikšmę, gali atsirasti netikėtų rezultatų. Siekiant išspręsti šią problemą, gali būti pridėtas papildomas įvesties patvirtinimas.
Bash if-else pareiškimas
Pagrindinė „if-else“ teiginio „Bash“ sintaksė:
#!/bin/bash
if [ sąlyga ]; tada
# kodas, kuris turi būti įvykdytas, jei sąlyga yra teisinga
Kitas
# kodas, kuris turi būti vykdomas, jei sąlyga klaidinga
būti
Paaiškinimas:
-
if [ condition ]; then>: ši eilutė pradeda teiginį if, kurcondition>yra vertinama išraiška. Jei sąlyga teisinga, kodas vidujethen>blokas vykdomas. -
# code to be executed if the condition is true>: Tai yra kodo blokas, kuris vykdomas, jei if sakinyje nurodyta sąlyga yra teisinga. -
else>: Jei sąlyga if sakinyje yra klaidinga, kodas vidujeelse>blokas vykdomas. -
# code to be executed if the condition is false>: Tai yra kodo blokas, kuris vykdomas, jei if sakinyje nurodyta sąlyga yra klaidinga. -
fi>: tai žymi if-else teiginio pabaigą.
Kaip rasti didesnį skaičių naudojant „if-else“ teiginius „Bash Script“?
Čia yra „Bash“ scenarijus, skirtas sužinoti didesnį skaičių naudojant „if-else“ teiginį „Bash Script“.
#!/bin/bash
# Paraginkite vartotoją įvesti x reikšmęecho -n Įveskite x reikšmę:
skaityti xjei [ $x -gt 5 ]; tada
echo x yra didesnis nei 5
Kitas
echo x yra ne didesnis nei 5
būti
Paaiškinimas:
- #!/bin/bash : Ši eilutė vadinama shebang ir nurodo, kad scenarijus turi būti interpretuojamas ir vykdomas naudojant Bash apvalkalą.
- # Paraginkite vartotoją įvesti x reikšmę : Tai komentaras, nurodantis kitos eilutės tikslą.
- echo -n Įveskite x reikšmę: : Šioje eilutėje spausdinamas pranešimas Įveskite x: reikšmę į terminalą, neperkeldami į kitą eilutę. Vartotojas įves savo vertę toje pačioje eilutėje.
- skaityti x : ši eilutė nuskaito vartotojo įvestį ir priskiria ją kintamajam „x“.
- jei [ $x -gt 5 ]; tada : Tai yra if teiginys, kuris patikrina, ar „x“ reikšmė yra didesnė nei 5.
- x $ : reiškia kintamojo „x“ reikšmę.
- -gt : reiškia didesnį nei skaitinio palyginimo kontekste.
- 5 : lyginama vertė.
- echo x yra didesnis nei 5 : Jei ankstesnės eilutės sąlyga yra teisinga, ši eilutė bus vykdoma, spausdinant x yra didesnis nei 5 terminale.
- Kitas : Jei sąlyga if sakinyje yra klaidinga, scenarijus pereina į else bloką.
- echo x yra ne didesnis nei 5 : Ši eilutė vykdoma, jei „x“ reikšmė yra ne didesnė nei 5, o terminale spausdinama x ne didesnė nei 5.
- būti : Tai reiškia „jei-kita“ bloko pabaigą.
Išvestis:
Didesnio skaičiaus radimas naudojant if-else
Bash if-elif-else pareiškimas
The if-elif-else> sakinys Bash kalboje naudojamas sąlyginiam šakojimui. Tai leidžia nurodyti kelias sąlygas ir vykdyti skirtingus kodo blokus, remiantis šių sąlygų įvertinimu.
Pagrindinė „if-elif-else“ teiginio Bash sintaksė:
#!/bin/bash
if [ sąlyga1 ]; tada
# Kodas turi būti vykdomas, jei sąlyga1 yra teisinga
elif [sąlyga2]; tada
# Kodas turi būti vykdomas, jei sąlyga2 yra teisinga
elif [ sąlyga3 ]; tada
# Kodas turi būti vykdomas, jei sąlyga3 yra teisinga
Kitas
# Kodas turi būti vykdomas, jei nė viena iš sąlygų nėra teisinga
būti
Paaiškinimas:
- if [ sąlyga1 ]; tada : Tai yra pradinis taškas
if-elif-else>pareiškimas. Šiame bloke esantis kodas bus vykdomas, jeicondition1>tiesa. - # Kodas turi būti vykdomas, jei sąlyga1 yra teisinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition1>tiesa. - elif [sąlyga2]; tada : Jei
condition1>yra klaidinga, scenarijus patikrinacondition2>. Jeigucondition2>yra tiesa, šiame bloke esantis kodas yra vykdomas. - # Kodas turi būti vykdomas, jei sąlyga2 yra teisinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition2>tiesa. - elif [ sąlyga3 ]; tada : Jei abu
condition1>ircondition2>yra klaidingi, scenarijus patikrinacondition3>. Jeigucondition3>yra tiesa, šiame bloke esantis kodas yra vykdomas. - # Kodas turi būti vykdomas, jei sąlyga3 yra teisinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition3>tiesa. - Kitas : jei nė viena iš ankstesnių sąlygų (sąlyga1, sąlyga2, sąlyga3 ir kt.) nėra teisinga, kodas
else>blokas vykdomas. - # Kodas turi būti vykdomas, jei nė viena iš sąlygų nėra teisinga : pakeiskite šį komentarą tikruoju kodu, kurį norite paleisti, jei nė viena iš sąlygų nėra teisinga.
- būti : tai žymi pabaigą
if-elif-else>pareiškimas. Žodis fi rašomas atgal ir naudojamas sąlyginiams blokams uždaryti Bash.
Kaip sužinoti, ar skaičius yra teigiamas, neigiamas ar nulis, naudojant Bash teiginį „if-elif-else“?
Padidinkime kodą aukščiau pateiktame pavyzdyje, kad pridėtume sąlygą, kad patikrintumėte, ar nėra nulio.
#!/bin/bash
# Paraginkite vartotoją įvesti numerį
echo -n Įveskite skaičių:
skaityti nrjei [ $num -gt 0 ]; tada
echo $num yra teigiamas skaičius.
elif [ $num -lt 0 ]; tada
echo $num yra neigiamas skaičius.
Kitas
echo $num yra nulis.
būti
Paaiškinimas:
- #!/bin/bash : Ši eilutė yra „shebang“, nurodanti, kad scenarijus turi būti interpretuojamas ir vykdomas naudojant „Bash“ apvalkalą.
- # Paraginkite vartotoją įvesti numerį : Tai komentaras, nurodantis kitos eilutės tikslą.
- echo -n Įveskite skaičių: : Šioje eilutėje spausdinamas pranešimas Įveskite numerį: į terminalą neperkeliant į kitą eilutę. Vartotojas įves savo numerį toje pačioje eilutėje.
- skaityti nr : ši eilutė nuskaito vartotojo įvestį ir priskiria ją kintamajam „num“.
- jei [ $num -gt 0 ]; tada : Tai yra if teiginys, kuris patikrina, ar „num“ reikšmė yra didesnė nei 0.
- $num : reiškia kintamojo „num“ reikšmę.
- -gt : reiškia didesnį nei skaitinio palyginimo kontekste.
- 0 : lyginama vertė.
- echo $num yra teigiamas skaičius. : Jei ankstesnės eilutės sąlyga yra teisinga, ši eilutė bus vykdoma, spausdinant $num yra teigiamas skaičius. iki terminalo.
- elif [ $num -lt 0 ]; tada : jei sąlyga if sakinyje yra klaidinga, ši eilutė patikrina, ar „num“ reikšmė yra mažesnė nei 0.
- $num : reiškia kintamojo „num“ reikšmę.
- -lt : reiškia mažiau nei skaitinio palyginimo kontekste.
- 0 : lyginama vertė.
- echo $num yra neigiamas skaičius. : Jei sąlyga elif sakinyje yra teisinga, ši eilutė bus vykdoma, spausdinant $num yra neigiamas skaičius. iki terminalo.
- Kitas : Jei ir sąlygos if ir elif teiginiuose yra klaidingos, scenarijus pereina į else bloką.
- echo $num yra nulis. : Ši eilutė vykdoma, jei „num“ reikšmė yra ne didesnė nei 0 ir ne mažesnė nei 0, spausdinant $num yra nulis. iki terminalo.
- būti : tai reiškia bloko „jei-elif-kitas“ pabaigą.
Išvestis:
jei skaičius yra teigiamas, neigiamas arba nulis, naudojant „jei-elif-else“.
Bash Neted if pareiškimas
„Bash“ galite naudoti „nested“. if> teiginius, kad sukurtų sudėtingesnes sąlygines struktūras. Štai įdėto sintaksė if> pareiškimas:
#!/bin/bash
if [ sąlyga1 ]; tada
# Kodas turi būti vykdomas, jei sąlyga1 yra teisinga
if [ sąlyga2 ]; tada
# Kodas turi būti vykdomas, jei sąlyga2 yra teisinga
Kitas
# Kodas turi būti vykdomas, jei sąlyga2 klaidinga
būti
Kitas
# Kodas turi būti vykdomas, jei sąlyga1 klaidinga
būti
Paaiškinimas:
- if [ sąlyga1 ]; tada : Tai yra išorinis
if>pareiškimas. Jeigucondition1>tiesa, šiame bloke esantis kodas yra vykdomas. - # Kodas turi būti vykdomas, jei sąlyga1 yra teisinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition1>tiesa. - jei [ sąlyga2 ]; tada : Išorinio bloko viduje
if>teiginys, yra vidinisif>pareiškimas. Jeigucondition2>tiesa, šiame bloke esantis kodas yra vykdomas. - # Kodas turi būti vykdomas, jei sąlyga2 yra teisinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition2>tiesa. - Kitas : Jei
condition2>vidinėjeif>teiginys yra klaidingas, kodas vidujeelse>vidinis blokasif>pareiškimas vykdomas. - # Kodas turi būti vykdomas, jei sąlyga2 klaidinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition2>yra klaidinga. - būti : Tai žymi vidinės dalies pabaigą
if>pareiškimas. - Kitas : Jei
condition1>išorinėjeif>teiginys yra klaidingas, kodas vidujeelse>išorinis blokasif>pareiškimas vykdomas. - # Kodas turi būti vykdomas, jei sąlyga1 klaidinga : pakeiskite šį komentarą tikru kodu, kurį norite paleisti, jei
condition1>yra klaidinga. - būti : Tai žymi išorinės dalies pabaigą
if>pareiškimas.
Kaip patikrinti tinkamumą pagal amžių ir vyresnio amžiaus žmonių naudą „Bash“ naudojant „Neded If“ pareiškimus?
Šiek tiek pakoreguokite aukščiau esantį kodą, kad galėtumėte naudoti įdėtą-if.
#!/bin/bash
# Paraginkite vartotoją įvesti amžių
echo -n Įveskite savo amžių:
skaityti amžiųjei [ $amžius -ge 18 ]; tada
echo Turite teisę balsuoti.
jei [ $amžius -ge 65 ]; tada
echo Taip pat turite teisę gauti senjorų išmokas.
Kitas
echo Jūs dar negalite gauti senjorų išmokų.
būti
Kitas
echo Jūs dar neturite teisės balsuoti.
būti
Paaiškinimas:
- #!/bin/bash : Ši eilutė yra „shebang“, nurodanti, kad scenarijus turi būti interpretuojamas ir vykdomas naudojant „Bash“ apvalkalą.
- # Paraginkite vartotoją įvesti amžių : Tai komentaras, nurodantis kitos eilutės tikslą.
- echo -n Įveskite savo amžių: : Šioje eilutėje spausdinamas pranešimas Įveskite savo amžių: į terminalą neperėjus į kitą eilutę. Vartotojas įves savo amžių toje pačioje eilutėje.
- skaityti amžių : Ši eilutė nuskaito vartotojo įvestį ir priskiria ją kintamajam „amžius“.
- jei [ $amžius -ge 18 ]; tada : Tai yra if teiginys, kuris patikrina, ar „amžiaus“ reikšmė yra didesnė arba lygi 18.
- $amžius : reiškia kintamojo „amžius“ reikšmę.
- -ge : reiškia didesnį arba lygų skaitinio palyginimo kontekste.
- 18 : lyginama vertė.
- echo Turite teisę balsuoti. : Jei ankstesnės eilutės sąlyga yra teisinga, ši eilutė bus vykdoma, spausdinant Jūs turite teisę balsuoti. iki terminalo.
- jei [ $amžius -ge 65 ]; tada : pirmame if bloke tai yra kitas if sakinys, kuris tikrina, ar „amžiaus“ reikšmė yra didesnė arba lygi 65.
- $amžius : reiškia kintamojo „amžius“ reikšmę.
- -ge : reiškia didesnį arba lygų skaitinio palyginimo kontekste.
- 65 : lyginama vertė.
- echo Taip pat turite teisę gauti senjorų išmokas. : Jei sąlyga vidiniame if teiginyje yra teisinga, ši eilutė bus vykdoma, spausdinant Jūs taip pat turite teisę gauti senjorų išmokas. iki terminalo.
- Kitas : Jei sąlyga vidiniame if sakinyje yra klaidinga, scenarijus pereina į else bloką išoriniame if sakinyje.
- echo Jūs dar negalite gauti senjorų išmokų. : Ši eilutė vykdoma, jei „amžiaus“ reikšmė yra ne didesnė arba lygi 65 m., spausdinant Jūs dar neturite teisės į senjorų išmokas. iki terminalo.
- būti : Tai reiškia vidinio jei-kita bloko pabaigą.
- Kitas : Jei sąlyga išoriniame if teiginyje yra klaidinga, scenarijus pereina į else bloką.
- echo Jūs dar neturite teisės balsuoti. : Ši eilutė vykdoma, jei „amžiaus“ reikšmė yra ne didesnė arba lygi 18, spausdinant Jūs dar neturite teisės balsuoti. iki terminalo.
- būti : Tai reiškia išorinio jei-kita bloko pabaigą.
Išvestis:
įdėtas-if naudojant Bash
DUK ir kai kurios pastabos dėl CONDITION
Tai yra keletas dalykų, kuriuos turėčiau atsiminti rašant testo sąlygas bash.
1. Užtikrinkite, kad tarp skliaustų ir tikrojo patikrinimo / palyginimo teiginio būtų palikti tarpai.
Pavyzdžiui, toliau nurodyta neveiks.
if [$x==0]Bash praneš apie klaidą apie a dingęs ] .
2. Visada užbaikite eilutę prieš įtraukdami naują raktinį žodį, pvz., tada.
Jei, tada else, elif ir fi yra apvalkalo raktiniai žodžiai, tai reiškia, kad jie negali būti naudojami toje pačioje eilutėje. Įdėkite a; tarp ankstesnio teiginio ir raktinio žodžio arba pradėkite naują eilutę su raktiniu žodžiu.
3. Norėdami viename sakinyje naudoti daug sąlygų, naudokite loginius operatorius.
Galime naudoti loginius AND(&&) arba loginius OR(||) operatorius, kad galėtume naudoti kelias sąlygas.
Pavyzdžiui:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo 'x is greatest' fiČia -ge yra didesnis nei arba lygus sutrumpinimas
4. Kaip palyginti eilutes Bash if sakinyje?
Naudokite ` => `> operatorius eilutės lygybei ir ` !=`> už nelygybę.
Pavyzdžiui:
if [ '$string1' = '$string2' ]; then # Code to execute if strings are equal else # Code to execute if strings are not equal fi
5. Ar galiu naudoti reguliariąsias išraiškas „Bash if“ sakiniuose?
Taip, galite naudoti ` [[ ... ]]`> konstruoti pažangesniam eilučių atitikimui su reguliariosiomis išraiškomis.
Pavyzdžiui:
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. Kaip patikrinti, ar Bash scenarijuje yra failas naudojant if sakinį?
Galite naudoti ` -e`> vėliava tokios būklės:
if [ -e 'filename' ]; then # Code to execute if the file exists else # Code to execute if the file does not exist fi
7. Kokia yra if-else sakinio sintaksė Bash scenarijuose?
Pagrindinė sintaksė, skirta an „jei-kitaip“. Bash scenarijaus teiginys yra:
if [ condition ]; then # Code to execute if condition is true else # Code to execute if condition is false fi
8. Kaip naudoti elif teiginį Bash scenarijuje?
` elif`> teiginys naudojamas papildomoms sąlygoms patikrinti, jei pradinis if> sąlyga klaidinga.
Štai pavyzdys:
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. Kaip galiu naudoti loginius operatorius (AND, OR) Bash if sakiniuose?
Galite naudoti ` -a`> loginiams IR ir ` -o`> loginiam ARBA.
Pavyzdžiui:
if [ condition1 -a condition2 ]; then # Code to execute if both conditions are true fi
Išvada
Šiame straipsnyje aptarėme „Bash“ scenarijus, kurie yra labai naudingas įrankis, leidžiantis jūsų kompiuteriui atlikti veiksmus automatiškai. Šis straipsnis mus išmokė apie if teiginį Bash, kuris yra tarsi sprendimų priėmėjas scenarijų srityje. Mokėmės pagrindų, matėme pavyzdžių, pvz., patikrinti, ar skaičius yra lyginis, ar išsiaiškinti, ar kas nors gali balsuoti, ir net tyrinėjome įdomesnius dalykus, pvz., daugelio sąlygų tvarkymą ar teiginių įtraukimą vienas į kitą. Straipsnyje buvo pateikti aiškūs paaiškinimai, pavyzdžiai ir atsakyta į dažniausiai užduodamus klausimus, kurie padės mums geriau naudoti Bash scenarijus. Svarbiausia yra būti atsargiems su detalėmis, pvz., tarpais ir specialiomis taisyklėmis, kad mūsų scenarijai veiktų sklandžiai ir būtų lengviau atlikti užduotis kompiuteryje.