Arten von bedingten Aussagen
Die folgenden Arten von bedingten Aussagen können in Bash verwendet werden.
Jede Art von Aussagen wird in diesem Tutorial mit einem Beispiel erläutert.
Bedingte Operatoren
Viele bedingte Operatoren können in der Anweisung "If" verwendet werden, um eine bedingte Aufgabe zu erledigen. Einige verwendete bedingte Bediener werden nachstehend erwähnt.
Operator | Beschreibung |
-Gl | Gibt true zurück, wenn zwei Zahlen gleichwertig sind |
-lt | Gibt true zurück, wenn eine Zahl weniger als eine andere Zahl ist |
-gt | Gibt true zurück, wenn eine Zahl größer als eine andere Zahl ist |
== | Gibt true zurück, wenn zwei Saiten gleichwertig sind |
!= | Gibt true zurück, wenn zwei Saiten nicht gleichwertig sind |
! | Gibt wahr zurück, wenn der Ausdruck falsch ist |
-D | Überprüfen Sie die Existenz eines Verzeichnisses |
-e | Überprüfen Sie die Existenz einer Datei |
-R | Überprüfen Sie die Existenz einer Datei und lesen Sie die Berechtigung |
-w | Überprüfen Sie die Existenz einer Datei und Schreibberechtigung |
-X | Überprüfen Sie das Vorhandensein einer Datei und führen Sie die Genehmigung aus |
Verwendung von einfacher wenn auch Anweisung
Syntax:
wenn [Zustand]; Dann
Befehl (en)
fi
Dieses Beispiel zeigt die einzelne bedingte Verwendung von if Anweisung. Erstellen Sie eine Datei namens 'Cond1.sh 'und fügen Sie das folgende Skript hinzu. Dieses Skript nimmt einen numerischen Wert als Eingabe an und prüft, ob der Wert weniger als 100 beträgt oder nicht, indem es bei Bedingung verwendet wird. Wenn die Bedingung wahr ist, druckt sie eine Nachricht im Terminal aus.
Cond1.Sch
#!/Bin/Bash
echo "eine Nummer eingeben"
Lesen n
wenn [$ n -lt 100]; Dann
printf "$ n ist weniger als 100 \ n"
fi
Ausgang:
Führen Sie das Skript aus.
$ bash cond1.Sch
Hier wird 87 als Eingabe angenommen, der weniger als 100 ist. Die Ausgabe lautet also "87 ist weniger als 100". Für den Eingang von mehr als 100 wird kein Ausgang gedruckt.
Wie Sie zwei Bedingungen mit logischer und in 'if' Anweisung anwenden können, wird in diesem Beispiel angegeben. Erstellen Sie eine Datei namens 'Cond2.Sch'und fügen Sie das folgende Skript hinzu. Hier, Nutzername Und Passwort wird dem Benutzer entnommen. Als nächstes wird eine Anweisung verwendet, um den Benutzernamen zu überprüfen 'Administrator"Und das Passwort ist"Superuser''. Wenn beide Werte übereinstimmen, gibt die Anweisung "If" true zurück und druckt die Meldung "Login erfolgreich" aus.
Cond2.Sch
#!/Bin/Bash
Echo "Benutzername eingeben"
Lesen Sie Un
Echo "Passwort eingeben"
Lesen Sie PW
wenn [["$ un" == "admin" && "$ pw" == "Superuser"]]; Dann
Echo "Anmeldung erfolgreich."
fi
Ausgang:
Führen Sie das Skript aus.
$ bash cond2.Sch
Das Skript druckt keine Ausgabe für ungültige Eingaben und druckt die Erfolgsnachricht für gültige Eingaben aus.
Verwendung einer IF-ELSE-Anweisung
Syntax:
wenn [Zustand]; Dann
Befehl (en)
anders
Befehl (en)
fi
Um eine Anweisung für den wahren Zustand und eine andere Aussage für die falsche Bedingung auszuführen, ansonsten In diesem Beispiel wird Anweisung verwendet. Erstellen Sie eine Datei mit dem Namen 'Cond3.Sch' und fügen Sie das folgende Skript hinzu. Hier, $ Name Variable wird verwendet, um Eingaben vom Benutzer und den Wert von zu nehmen $ Name wird mit zwei Werten verglichen, "Neha" Und 'Null''. Wenn $ Name übereinstimmt mit einem dieser Werte, wenn die Bedingung true und die Anweisung von zurückgibt 'Wenn' Teil wird ausgeführt. Wenn $ Name stimmt nicht mit einem der Werte überein, wenn die Bedingung falsch zurückgibt und die Anweisung von 'anders' Teil wird ausgeführt.
Cond3.Sch
#!/Bin/Bash
Echo "Geben Sie Ihren Namen ein"
Name lesen
if [[$ name == "neha" || $ name == 'nil']; Dann
Echo "du hast den Preis gewonnen"
anders
echo "Versuch zum nächsten Mal"
fi
Ausgang:
Führen Sie das Skript aus.
$ bash cond3.Sch
Die Ausgabe lautet: „Sie haben den Preis für gültige Eingaben gewonnen“ und "Versuchen Sie es zum nächsten Mal" für die ungültige Eingabe.
Verwendung einer IF-ELIF-ELSE-Anweisung
Syntax:
wenn [Zustand]; Dann
Befehl (en)
Elif [Zustand]; Dann
Befehl (en)
…
anders
Befehl (en)
fi
Mehrere Bedingungen mit mehreren wenn in diesem Beispiel für die Drucken der Note anhand der Eingabemarke deklariert werden. Erstellen Sie eine Datei mit dem Namen 'Cond4.Sch'und fügen Sie das folgende Skript hinzu. Nach dem Wert von $ mark, Die erste 'if' -serklärung testet, dass der Wert größer oder gleich 90 ist. Wenn es wahr zurückgibt, druckt es „Note - A+“, andernfalls wird es für die zweite Bedingung erfolgt. Das zweite 'if' testet den Wert weniger als 90 und größer oder gleich 80. Wenn es wahr zurückgibt, druckt es „Note - A“, sonst wird es für den dritten Zustand verwendet. Wenn die dritte Bedingung wahr ist. Wenn die vierte Bedingung wahr ist, druckt sie „Note - C+“ und wenn sie false zurückgibt, wird die Anweisung des anderen Teils ausgeführt, die "Note - F" drucken wird.
Cond4.Sch
#!/Bin/Bash
echo "die Marke eingeben"
Lesen Sie Mark
if (($ mark> = 90)); Dann
echo "grade - a+"
ELIF ($ marke < 90 && $mark >= 80)); Dann
echo "grade - a"
ELIF ($ marke < 80 && $mark >= 70)); Dann
Echo "Klasse - B+"
ELIF ($ marke < 70 && $mark >= 60)); Dann
Echo "Klasse - C+"
anders
echo "grade - f"
fi
Ausgang:
Führen Sie das Skript aus.
$ bash cond4.Sch
Das Skript wird durch drei Markwerte getestet. Dies sind 95, 79 und 50. Nach den im Skript verwendeten Bedingungen wird die folgende Ausgabe gedruckt.
Verwendung von verschachtelten wenn
Syntax:
wenn [Zustand]; Dann
Befehle
wenn [Zustand]; Dann
Befehle
fi
fi
Dieses Beispiel zeigt die Verwendung von verschachtelten If -Erklärungen, die den Bonus basierend auf Verkaufsbetrag und Zeitdauer berechnen. Erstellen Sie eine Datei namens 'Cond5.sh 'und fügen Sie den folgenden Code hinzu. Die Werte von $ Betrag Und $ Dauer werden als Eingabe angenommen. Als nächstes ist die erste "If" -serklärung $ $ betreten als 10000 oder nicht. Wenn es wahr zurückgibt, überprüft es die Bedingung von verschachtelten "If'Statements". der Wert von $ Dauer wird von der internen 'if' Anweisung überprüft. Wenn $ Dauer ist kleiner als oder gleich 7, dann wird die Nachricht „Sie erhalten 20% Bolus“ -Nach ", da sonst die Nachricht„ Sie erhalten 15% Bonus “in der gespeichert werden $ Output Variable. Wenn die erste 'wenn' Bedingung false zurückgibt, werden die Anweisungen des anderen Teils ausgeführt. In der zweiten verschachtelten "wenn.
Cond5.Sch
#!/Bin/Bash
Echo "Geben Sie den Verkaufsbetrag ein"
Betrag lesen
Echo "Geben Sie die Zeitdauer ein"
Dauer lesen
if (($ betragen> = 10000)); Dann
if (($ Dauer <= 7 )); then
output = "Sie erhalten 20% Bonus"
anders
output = "Sie erhalten 15% Bonus"
fi
anders
if (($ Dauer <= 10 )); then
output = "Sie erhalten 10% Bonus"
anders
output = "Sie erhalten 5% Bonus"
fi
fi
echo "$ output"
Ausgang:
Führen Sie das Skript aus.
$ bash cond5.Sch
Das Skript wird um 12000 als Betrag und 5 als Dauerwert zuerst getestet. Nach der Bedingung "If" wird die Nachricht „Sie erhalten 20% Bonus drucken. Als nächstes wird das Skript von 9000 als Betrag und 12 als Dauerwerte getestet, und die Meldung „Sie erhalten 5% Bonus“ wird gedruckt.
Verwendung von Fallanweisung
Syntax:
Fall in
Muster 1) Befehle ;;
Muster n) Befehle ;;
ESAC
Die Anweisung "Fall" kann als Alternative zu "if" -Anweisung verwendet werden. Erstellen Sie eine Datei mit dem Namen 'Cond6.Sch' und fügen Sie den folgenden Code hinzu, um einige einfache arithmetische Operationen durchzuführen. In diesem Skript werden drei Werte aus der Befehlszeile gelesen und in den Variablen, $ N1, $ N2 und $ OP, gespeichert. Hier werden $ n1 und $ n2 verwendet, um zwei numerische Werte zu speichern, und $ op wird verwendet, um einen beliebigen Arithmetikbetreiber oder Symbol zu speichern. Die Anweisung "Fall" wird verwendet, um vier Symbole zu überprüfen, um eine arithmetische Operation durchzuführen. Wenn $ op '+' ist, fügt es $ N1 und $ N2 hinzu und speichert das Ergebnis in $ Ergebnis. Ebenso werden Symbole "-" und "/" verwendet, um den Subtraktions- und Teilungsbetrieb durchzuführen. Das 'x' -Symbol wird hier verwendet, um den Multiplikationsvorgang durchzuführen. Für jeden anderen Wert von $ op wird eine Nachricht "falsche Anzahl von Argumenten" gedruckt, die "falsche Anzahl von Argumenten" drucken wird.
Cond6.Sch
#!/Bin/Bash
N1 = $ 1
op = $ 2
N2 = $ 3
Fall $ op in
'+')
((Ergebnis = $ N1+$ n2)) ;;
'-')
((Ergebnis = $ N1- $ N2)) ;;
'X')
((Ergebnis = $ n1*$ n2)) ;;
'/')
((Ergebnis = $ N1/$ N2)) ;;
*)
echo "falsche Anzahl von Argumenten"
beenden 0 ;;
ESAC
echo "$ n1 $ op $ n2 = $ result"
Ausgang:
Führen Sie das Skript mit drei Befehlszeilenargumenten aus. Das Skript wird viermal mit vier Operatoren "+", "-", "x" und "/" ausgeführt.
$ bash cond6.Sh 40 + 20
$ bash cond6.Sh 40 - 20
$ bash cond6.Sh 40 x 20
$ bash cond6.Sh 40 /20
Die folgende Ausgabe wird nach dem Ausführen des Skripts angezeigt.
Beispiel-7: 'Fall' Anweisung mit einem Wertebereich
Die Anweisung "Fall" kann mehrere Bedingungen mit dem logischen Operator wie "if" -Anweisung nicht definieren. Mit der Pipe ('|') können jedoch in der Anweisung "Fall" mehrere Bedingungen zugewiesen werden. Dieses Beispiel zeigt den Notenwert basierend auf Markierungen wie Beispiel-4 Verwenden Sie jedoch eine "Fall" -Anweisung anstelle von "if". $ Name Und $ mark -Werte werden durch Befehlszeilenargumente angegeben. Die erste Bedingung ist definiert durch '9 [0-9] | 100'Für das Drucken von "Note - a+". Dies bedeutet, wenn der $ marke Wert innerhalb von 90-99 oder 100 liegt, ist die Bedingung wahr. Der zweite Zustand ist ''8 [0-9]'Für das Drucken von "Note - A" und dies wird übereinstimmen $ mark mit jedem Wert aus dem Bereich 80-89. Die dritte und vierte Bedingungen funktionieren wie der zweite Zustand. Der fünfte Zustand ist ''0 | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9]'Für das Drucken von' Note - F 'und es wird übereinstimmen $ mark mit 0 oder einer beliebigen Zahl in den Bereichen 0-9, 10-19, 20-29, 30-39, 40-49 und 50-59.
Cond7.Sch
#!/Bin/Bash
# Die Note drucken basierend auf der Marke
Name = $ 1
Mark = $ 2
Fall $ mark in
9 [0-9] | 100)
grade = "a+" ;;
8 [0-9])
grade = "a" ;;
7 [0-9])
grade = "b+" ;;
6 [0-9])
grade = "c+" ;;
0 | [0-9] | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9])
grade = "f" ;;
*)
echo "Ungültige Marke"
beenden 0 ;;
ESAC
echo "$ name erhielt $ grade"
Ausgang:
Führen Sie das Skript mit zwei Befehlszeilenargumenten aus. Das Skript wird viermal mit unterschiedlichen Argumentwerten ausgeführt.
$ bash cond7.Sh lily 92
$ bash cond7.Sh -Nahar 78
$ bash cond7.Sh John 500
$ bash cond7.Sh John Aa
In diesem Tutorial werden in diesem Tutorial mehrere Verwendungen von Bedingungsanweisungen anhand geeigneter Beispiele zu erklären. Hoffnung, der Leser kann bedingte Aussagen im Bash -Skript effizient verwenden, nachdem die obigen Beispiele ordnungsgemäß ausgeübt wurden.
Weitere Informationen finden Sie im Video!