Typer betingede uttalelser
Følgende typer betingede utsagn kan brukes i bash.
Hver type uttalelser er forklart i denne opplæringen med et eksempel.
Betingede operatører
Mange betingede operatører kan brukes i 'hvis' uttalelse for å gjøre en betinget oppgave. Noen for det meste brukte betingede operatører er nevnt nedenfor.
Operatør | Beskrivelse |
-Eq | Returnerer sant hvis to tall er likeverdige |
-Lt | Returnerer sant hvis et tall er mindre enn et annet tall |
-gt | Returnerer sant hvis et tall er større enn et annet tall |
== | Returnerer sant hvis to strenger er likeverdige |
!= | Returnerer sant hvis to strenger ikke er likeverdige |
! | Returnerer sant hvis uttrykket er usant |
-d | Sjekk eksistensen av en katalog |
-e | Sjekk eksistensen av en fil |
-r | Sjekk eksistensen av en fil og lese tillatelse |
-w | Sjekk eksistensen av en fil og skrivetillatelse |
-x | Sjekk eksistensen av en fil og utfør tillatelse |
Bruk av enkel hvis uttalelse
Syntaks:
hvis [tilstand]; deretter
Kommando (er)
fi
Dette eksemplet viser den enkelt betingede bruken av IF -uttalelsen. Lage en fil som heter 'cond1.sh 'og legg til følgende skript. Dette skriptet vil ta en numerisk verdi som inngang og sjekke verdien er mindre enn 100 eller ikke ved å bruke IF -tilstand. Hvis tilstanden er sann, vil den skrive ut en melding i terminalen.
cond1.sh
#!/bin/bash
ekko "Skriv inn et nummer"
Les n
hvis [$ n -lt 100]; deretter
printf "$ n er mindre enn 100 \ n"
fi
Produksjon:
Kjør manuset.
$ bash cond1.sh
Her blir 87 tatt som innspill som er mindre enn 100. Så utgangen er "87 er mindre enn 100". Ingen utgang skrives ut for inngangen større enn 100.
Hvordan du kan bruke to forhold med logisk og i 'hvis' uttalelse vises i dette eksemplet. Lage en fil som heter 'cond2.sh'Og legg til følgende skript. Her, Brukernavn og passord vil bli hentet fra brukeren. Neste, 'hvis' uttalelse brukes til å sjekke brukernavnet er 'Admin'Og passordet er'Superbruker'. Hvis begge verdiene samsvarer, vil "hvis" uttalelse returneres og skrive ut meldingen "Logg inn vellykket".
cond2.sh
#!/bin/bash
ekko "Enter brukernavn"
Les un
ekko "Skriv inn passord"
Les PW
if [["$ un" == "admin" && "$ pw" == "Superuser"]]; deretter
ekko "pålogging vellykket.""
fi
Produksjon:
Kjør manuset.
$ bash cond2.sh
Skriptet skriver ut ingen utgang for ugyldig inndata og skriver ut suksessmeldingen for gyldig inndata.
Bruk av IF-Else-uttalelsen
Syntaks:
hvis [tilstand]; deretter
Kommando (er)
ellers
Kommando (er)
fi
Å utføre en uttalelse for sann tilstand og en annen uttalelse for den falske tilstanden, If-Else Uttalelse brukes i dette eksemplet. Lag en fil som heter 'Cond3.sh ' og legg til følgende skript. Her, $ navn Variabel brukes til å ta innspill fra brukeren og verdien av $ navn vil bli sammenlignet med to verdier, 'Neha' og 'Nil'. Hvis $ navn samsvarer med noen av disse verdiene da hvis tilstanden vil komme tilbake og uttalelsen om 'hvis' Del vil bli henrettet. Hvis $ navn samsvarer ikke med noen av verdiene, så hvis tilstanden vil komme tilbake falsk og uttalelsen om 'ellers' Del vil bli henrettet.
cond3.sh
#!/bin/bash
ekko "Skriv inn navnet ditt"
Les navn
if [[$ name == "neha" || $ name == 'nil']]; deretter
ekko "Du har vunnet prisen"
ellers
ekko "Prøv neste gang"
fi
Produksjon:
Kjør manuset.
$ bash cond3.sh
Utgangen er, "du har vunnet prisen" for gyldig innspill og "prøv neste gang" for ugyldig inngang.
Bruk av if-elif-elves uttalelse
Syntaks:
hvis [tilstand]; deretter
Kommando (er)
elif [tilstand]; deretter
Kommando (er)
..
ellers
Kommando (er)
fi
Flere forhold med flere hvis uttalelser er erklært i dette eksemplet for å skrive ut karakter basert på inngangsmerket. Lag en fil som heter 'Cond4.sh'Og legg til følgende skript. Etter å ha tatt verdien av $ Mark, Den første 'hvis' uttalelsen vil teste verdien er større enn eller lik 90. Hvis den kommer tilbake, vil den skrive ut "karakter - A+" ellers vil det gå for den andre tilstanden. Den andre 'hvis' vil teste verdien er mindre enn 90 og større enn eller lik 80. Hvis den kommer tilbake, vil den skrive ut "karakter - a" ellers vil det gå for tredje tilstand. Hvis den tredje tilstanden er sann, vil den skrive ut "Grade - B+" ellers gå for fjerde tilstand. Hvis den fjerde tilstanden er sann, vil den skrive ut “Grade - C+”, og hvis den kommer tilbake, vil uttalelsen fra Onse Del bli utført som vil trykke, “Grade - F”.
cond4.sh
#!/bin/bash
ekko "Gå inn i merket"
Les Mark
if (($ marker> = 90)); deretter
ekko "karakter - A+"
Elif (($ Mark < 90 && $mark >= 80)); deretter
ekko "karakter - A"
Elif (($ Mark < 80 && $mark >= 70)); deretter
ekko "karakter - B+"
Elif (($ Mark < 70 && $mark >= 60)); deretter
ekko "karakter - C+"
ellers
ekko "karakter - f"
fi
Produksjon:
Kjør manuset.
$ bash cond4.sh
Skriptet er testet av tre merkeverdier. Disse er 95, 79 og 50. I henhold til forholdene som brukes i skriptet, skrives følgende utgang.
Bruk av nestet hvis
Syntaks:
hvis [tilstand]; deretter
Kommandoer
hvis [tilstand]; deretter
Kommandoer
fi
fi
Dette eksemplet viser bruk av nestet hvis uttalelse som vil beregne bonus basert på salgsbeløp og tidsvarighet. Lage en fil som heter 'cond5.sh 'og legg til følgende kode. Verdiene til $ beløp og $ Varighet blir tatt som innspill. Deretter vil den første 'hvis' uttalelsen sjekke $ beløpet større enn eller lik 10000 eller ikke. Hvis det kommer tilbake, vil den sjekke tilstanden til nestet 'hvis'. verdien av $ Varighet er sjekket av det interne 'hvis' uttalelse. Hvis $ Varighet er mindre enn eller lik 7 da "du vil få 20% bolus" -melding vil bli lagret ellers vil meldingen “du får 15% bonus” lagres i $ utgang variabel. Hvis den første 'hvis' tilstanden kommer tilbake usant, vil uttalelsene fra eller annet deles utføres. I den andre nestede 'If' -tilstanden, vil "du får 10% bonus" -melding skrive ut for å returnere en ekte verdi og "du vil få 5% bonus" -melding vil skrive ut for å returnere en falsk verdi.
cond5.sh
#!/bin/bash
ekko "Angi salgsbeløpet"
Les beløp
ekko "Angi tidsvarigheten"
Les varighet
if (($ beløp> = 10000)); deretter
if (($ varighet <= 7 )); then
output = "Du vil få 20% bonus"
ellers
output = "Du vil få 15% bonus"
fi
ellers
if (($ varighet <= 10 )); then
output = "Du vil få 10% bonus"
ellers
output = "Du vil få 5% bonus"
fi
fi
ekko "$ output"
Produksjon:
Kjør manuset.
$ bash cond5.sh
Skriptet testes med 12000 som mengde og 5 som varighetsverdi først. I henhold til "hvis" -tilstanden, er meldingen, "du får 20% bonus som er skrevet ut. Deretter testes skriptet med 9000 som beløpet og 12 som varighetsverdier og meldingen “Du vil få 5% bonus” skrives ut.
Bruk av saksuttalelse
Syntaks:
sak inn
mønster 1) kommandoer ;;
mønster n) kommandoer ;;
Esac
"Sak" -uttalelse kan brukes som et alternativ til "if" -erklæring. Lag en fil som heter 'Cond6.sh ' og legg til følgende kode for å gjøre noen enkle aritmetiske operasjoner. Dette skriptet vil lese tre verdier fra kommandolinjen og lagre i variablene, $ n1, $ n2 og $ op. Her brukes $ N1 og $ N2 til å lagre to numeriske verdier og $ op brukes til å lagre en hvilken som helst aritmetisk operatør eller symbol. "Case" -uttalelse brukes til å sjekke for fire symboler for å utføre noen aritmetisk operasjon. Når $ op er '+', vil den legge til $ n1 og $ n2 og lagre resultatet i $ resultat. På samme måte brukes '-' og '/' symboler for å utføre subtraksjon og divisjonsoperasjon. 'x' symbol brukes her for å utføre multiplikasjonsoperasjonen. For enhver annen verdi på $ op, vil den skrive ut en melding, "feil antall argumenter".
cond6.sh
#!/bin/bash
N1 = $ 1
OP = $ 2
N2 = $ 3
sak $ op i
'+')
((Resultat = $ n1+$ n2)) ;;
'-')
((Resultat = $ n1- $ n2)) ;;
'x')
((Resultat = $ n1*$ n2)) ;;
'/')
((Resultat = $ n1/$ n2)) ;;
*)
ekko "feil antall argumenter"
Avslutt 0 ;;
Esac
ekko "$ n1 $ op $ n2 = $ resultat"
Produksjon:
Kjør skriptet med tre kommandolinjeargumenter. Skriptet utføres i fire ganger ved å bruke fire operatører, '+', '-', 'x' og '/'.
$ bash cond6.SH 40 + 20
$ bash cond6.SH 40 - 20
$ bash cond6.SH 40 x 20
$ bash cond6.SH 40/20
Følgende utgang vises etter å ha kjørt skriptet.
Eksempel-7: 'Case' uttalelse med en rekke verdier
"Case" -uttalelse kan ikke definere flere forhold med den logiske operatøren som 'IF' uttalelse. Men ved bruk av røret ('|') kan flere forhold tilordnes i "saken" -erklæringen. Dette eksemplet viser karakterverdien basert på merker som Eksempel-4 Men å bruke "sak" -uttalelse i stedet for "hvis". $ navn og $ marK -verdier er gitt av kommandolinje -argumenter. Den første tilstanden er definert av '9 [0-9] | 100'For å skrive ut “karakter - A+”. Dette betyr at hvis $ Mark-verdien er innen 90-99 eller 100, vil tilstanden være sann. Den andre tilstanden er '8 [0-9]'For å skrive ut “karakter - a”, og dette vil matche $ Mark med hvilken som helst verdi fra området, 80-89. Den tredje og fjerde forhold fungerer som den andre tilstanden. Den femte tilstanden er '0 | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9]'For å skrive ut' karakter - f 'og det vil matche $ Mark med 0 eller et hvilket som helst tall i rekkevidden 0-9, 10-19, 20-29, 30-39, 40-49 og 50-59.
cond7.sh
#!/bin/bash
# Utskriftsklasse basert på merket
Navn = $ 1
Mark = $ 2
sak $ markerer i
9 [0-9] | 100)
karakter = "A+" ;;
8 [0-9])
karakter = "A" ;;
7 [0-9])
karakter = "B+" ;;
6 [0-9])
karakter = "C+" ;;
0 | [0-9] | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9])
karakter = "F" ;;
*)
ekko "Ugyldig merke"
Avslutt 0 ;;
Esac
ekko "$ navn oppnådd $ karakter"
Produksjon:
Kjør skriptet med to kommandolinjeargumenter. Skriptet kjøres i fire ganger med forskjellige argumentverdier.
$ bash cond7.Sh Lily 92
$ bash cond7.SH NAHAR 78
$ bash cond7.Sh John 500
$ bash cond7.Sh John Aa
Flere bruksområder for tilstandsuttalelser blir prøvd å forklare i denne opplæringen ved å bruke passende eksempler. Håper, leseren vil kunne bruke betingede utsagn i bashskriptet effektivt etter å ha øvd eksemplene ovenfor riktig.
For mer informasjon, se videoen!