- Verwendung der „If“-Anweisung
- Verwendung der „If-Else“-Anweisung
- Verwendung der „If-Elif-Else“-Anweisung
- Verwendung der „If“-Anweisung zum Überprüfen einer leeren Variablen
- Verwendung der „If“-Anweisung mit logischem Operator
- Verwendung der verschachtelten „If“-Anweisungen
- Verwendung der „If“-Anweisung zur Überprüfung der Dateiexistenz
- Verwendung der „If“-Anweisung zur Überprüfung der Verzeichnisexistenz
- Verwendung der „If“-Anweisung mit Regex
- Verwendung der „Case“-Anweisung
Verwendung der „If“-Anweisung
Dieses Beispiel zeigt die einfache Verwendung der „if“-Anweisung in Bash. Zum Vergleichen der numerischen Werte in Bash können sechs Arten von Vergleichsoperatoren verwendet werden. Dies sind „-eq“ (gleich), „-ne“ (ungleich), „-le“ (kleiner als gleich), „-ge“ (größer als gleich), „-lt“ (kleiner als) und „ -gt“ (größer als). Die Verwendung von „-lt“ und „-eq“ wird im folgenden Skript angezeigt, unabhängig davon, ob die Zahl kleiner als 99 ist oder nicht mit dem Operator „-lt“ überprüft wurde. Die Zahl ist gerade oder ungerade und wird durch den „-eq“-Operator überprüft.
#!/bin/bash
#Weisen Sie einen numerischen Wert zu
( ( Nummer = fünfzig ) )
#Überprüfen Sie den numerischen Wert mit der „if“-Anweisung
Wenn [ $Anzahl -lt 99 ]
Dann
Echo „Nummer ist gültig.“
Sei
#Überprüfen Sie, ob die Zahl gerade ist oder nicht
Wenn [ $ ( ( $Anzahl % 2 ) ) -Gl 0 ]
Dann
Echo „Zahl ist gerade.“
Sei
Ausgabe :
Nach der Ausführung des vorherigen Skripts erscheint die folgende Ausgabe:
Verwendung der „If-Else“-Anweisung
Die Verwendung der „if-else“-Anweisung wird im folgenden Skript gezeigt. Dem Benutzer wird ein String-Wert entnommen und mit der „if-else“-Anweisung überprüft, ob der Wert „BLAU“ ist oder nicht.
#!/bin/bash
#Nimm einen String-Wert vom Benutzer
lesen -P „Geben Sie Ihre Lieblingsfarbe ein:“ Farbe
#Überprüfen Sie den Zeichenfolgenwert mit der Anweisung „if-else“.
Wenn [ ${color^^} == 'BLAU' ]
Dann
Echo „Gut, blaue Farbe ist verfügbar.“
anders
Echo ' $Farbe ist nicht verfügbar.'
Sei
Ausgabe :
Die folgende Ausgabe erscheint nach der Ausführung des vorherigen Skripts, wenn „rot“ als Eingabe verwendet wird:
Die folgende Ausgabe erscheint nach der Ausführung des vorherigen Skripts, wenn „blau“ als Eingabe verwendet wird:
Verwendung der „If-Elif-Else“-Anweisung
Die Verwendung der „if-elif-else“-Anweisung wird im folgenden Skript gezeigt. Dem Benutzer wird eine Zahl entnommen und mit den verschiedenen Werten verglichen, bis eine Übereinstimmung gefunden wird. Wenn eine Übereinstimmung gefunden wird, wird die entsprechende Meldung gedruckt. Wenn keine Übereinstimmung gefunden wird, wird die Standardmeldung gedruckt.
#!/bin/bash#Nehmen Sie den ID-Wert vom Benutzer
lesen -P 'Gib deine Seriennummer ein:' seriell
#Überprüfen Sie den Eingabewert mit der Anweisung „if-elif-else“.
Wenn [ $seriell == '4523' ]
Dann
Echo „Sie sind in Gruppe A ausgewählt.“
Elif [ $seriell == '8723' ]
Dann
Echo „Sie sind in Gruppe B ausgewählt.“
Elif [ $seriell == '3412' ]
Dann
Echo „Sie sind in Gruppe C ausgewählt.“
anders
Echo „Sie sind nicht ausgewählt“ .
Sei
Ausgabe:
Die folgende Ausgabe erscheint nach der Ausführung des Skripts mit dem Wert 8723:
Nach der Ausführung des Skripts mit dem Wert 9078 erscheint die folgende Ausgabe:
Verwendung der „If“-Anweisung zum Überprüfen einer leeren Variablen
Die Methode zum Überprüfen, ob eine Variable leer ist, ohne eine „if“-Anweisung zu verwenden, wird im folgenden Skript gezeigt. Für diese Aufgabe wird in der „if“-Anweisung die Option „-z“ verwendet.
#!/bin/bash#Nehmen Sie den ID-Wert vom Benutzer
lesen -P 'Gib deine Seriennummer ein:' seriell
#Überprüfen Sie, ob die Variable leer ist oder nicht
Wenn [ ! -Mit $seriell ]
Dann
#Überprüfen Sie den Eingabewert mit der Anweisung „if-elif-else“.
Wenn [ $seriell == '690' ]
Dann
Echo „Sie sind in Team-1 ausgewählt.“
Elif [ $seriell == '450' ]
Dann
Echo „Sie sind in Team-2 ausgewählt.“
anders
Echo „Sie sind nicht ausgewählt“ .
Sei
anders
Echo „Es wird keine Seriennummer angegeben.“
Sei
Ausgabe :
Nach der Ausführung des Skripts mit dem Wert 690 erscheint folgende Ausgabe:
Wenn kein Eingabewert übernommen wird, erscheint nach der Ausführung des Skripts folgende Ausgabe:
Verwendung der „If“-Anweisung mit logischen Operatoren
In der Bash-Bedingungsanweisung können drei Arten von logischen Operatoren verwendet werden. Dies sind logisches ODER (||), logisches UND (&&) und logisches NICHT (!). Vom Benutzer wird ein Codewert übernommen. Wenn der Eingabewert nicht leer ist, wird der Wert mit zwei Codewerten mittels logischem ODER überprüft. Wenn der Wert mit einem beliebigen Code übereinstimmt, wird die entsprechende Meldung gedruckt. Wenn kein passender Code gefunden wird, wird die Standardmeldung gedruckt.
#!/bin/bash#Nehmen Sie den Kurscode vom Benutzer
lesen -P „Geben Sie den Kurscode ein:“ Code
#Überprüfen Sie, ob die Variable leer ist oder nicht
Wenn [ ! -Mit $code ]
Dann
#Überprüfen Sie den Eingabewert mit der Anweisung „if-elif-else“.
Wenn [ [ $code == 'CSE-106' || $code == 'CSE-108' ] ]
Dann
Echo „CSE-Kurs.“
Elif [ [ $code == 'BBA-203' || $code == 'BBA-202' ] ]
Dann
Echo „BBA-Kurs.“
anders
Echo „Ungültiger Kurscode.“
Sei
anders
Echo „Es wird kein Kurscode angegeben.“
Sei
Ausgabe :
Nach der Ausführung des Skripts mit dem Eingabewert „CSE-108“ erscheint die folgende Ausgabe:
Nach der Ausführung des Skripts mit dem Eingabewert „BBA-56“ erscheint die folgende Ausgabe:
Verwendung der verschachtelten „If“-Anweisungen
Wenn eine „Wenn“-Bedingung innerhalb einer anderen „Wenn“-Bedingung verwendet wird, spricht man von einer verschachtelten „Wenn“-Anweisung. Die Methode zur Verwendung des verschachtelten „Wenn“ wird im folgenden Skript gezeigt. Vom Benutzer werden zwei Markierungswerte übernommen. Wenn die Eingabewerte nicht leer sind, prüft die erste „if“-Bedingung, ob der Wert von „$theory“ größer oder gleich 60 ist oder nicht. Wenn die erste „if“-Bedingung „true“ zurückgibt, prüft die zweite „if“-Bedingung, ob der Wert von „$lab“ größer oder gleich 50 ist oder nicht. Wenn die zweite „Wenn“-Bedingung ebenfalls „wahr“ zurückgibt, wird eine Erfolgsmeldung gedruckt. Andernfalls wird eine Fehlermeldung gedruckt.
#!/bin/bash#Nimm die Theorienote
lesen -P „Geben Sie die Theorienote ein:“ Theorie
#Nehmen Sie das Laborzeichen
lesen -P „Geben Sie das Laborzeichen ein:“ Labor
#Überprüfen Sie, ob die Variablen leer sind oder nicht
Wenn [ [ ! -Mit $theorie && ! -Mit $lab ] ]
Dann
#Überprüfen Sie die Eingabewerte mithilfe einer verschachtelten „if“-Anweisung
Wenn [ $theorie -ge 60 ]
Dann
Wenn [ $lab -ge fünfzig ]
Dann
Echo 'Du hast bestanden.'
anders
Echo 'Du bist durchgefallen.'
Sei
anders
Echo 'Du bist durchgefallen.'
Sei
anders
Echo „Theorie- oder Labornote ist leer.“
Sei
Ausgabe :
Wenn beide oder einer der Eingabewerte leer sind, erscheint die folgende Ausgabe:
Die folgende Ausgabe erscheint, wenn 78 als Theorienoten und 45 als Labornoten angenommen werden. Hier gibt die zweite „Wenn“-Bedingung „Falsch“ zurück:
Die folgende Ausgabe erscheint, wenn 67 als Theorienoten und 56 als Labornoten angenommen werden. Hier geben beide „Wenn“-Bedingungen „wahr“ zurück:
Die folgende Ausgabe erscheint, wenn 50 als Theorienoten und 80 als Labornoten angenommen werden. Hier gibt die erste „Wenn“-Bedingung „Falsch“ zurück:
Verwendung der „If“-Anweisung zur Überprüfung der Dateiexistenz
Die Existenz der Datei kann vom Bash-Skript auf zwei Arten überprüft werden. Eine davon ist die Verwendung des „-f“-Operators mit „[]“-Klammern. Eine andere Möglichkeit besteht darin, den Befehl „test“ und den Operator „-f“ zu verwenden. Es wird ein Dateiname genommen und die Existenz der Datei anhand der „if“-Bedingung mit dem „-f“-Operator überprüft. Dann wird ein anderer Dateiname verwendet und die Existenz der Datei mithilfe der „if“-Anweisung mit dem „test“-Befehl und dem „-f“-Operator überprüft.
#!/bin/bash#Nehmen Sie den Dateinamen
lesen -P „Geben Sie einen Dateinamen ein:“ fn1
#Überprüfen Sie, ob die Datei existiert oder nicht, ohne „test“ zu verwenden
Wenn [ -F $fn1 ]
Dann
Echo ' $fn1 Datei existiert.'
anders
Echo ' $fn1 Die Datei existiert nicht.'
Sei
#Neue Zeile hinzufügen
Echo
#Nehmen Sie einen anderen Dateinamen
lesen -P „Geben Sie einen anderen Dateinamen ein:“ fn2
#Überprüfen Sie mit „test“, ob die Datei existiert oder nicht
Wenn prüfen -F $fn2 ; Dann
Echo ' $fn2 Datei existiert.'
#Überprüfen Sie mit „test“, ob die Datei leer ist oder nicht
Wenn prüfen -Mit $fn2 ; Dann
Echo ' $fn2 Datei ist leer.“
anders
Echo ' $fn2 Datei ist nicht leer.
Sei
anders
Echo ' $fn2 Die Datei existiert nicht.'
Sei
Ausgabe :
Die folgende Ausgabe erscheint nach der Ausführung des Skripts, indem „test.txt“ und „testing.txt“ als Dateinamen verwendet werden. Laut Ausgabe sind beide Dateien am aktuellen Speicherort vorhanden und die Datei „testing.txt“ ist leer:
Die folgende Ausgabe erscheint nach der Ausführung des Skripts, indem „f1.txt“ und „test.txt“ als Dateinamen verwendet werden. Der Ausgabe zufolge ist die Datei „f1.txt“ am aktuellen Speicherort nicht vorhanden und die Datei „test.txt“ ist nicht leer:
Verwendung der „If“-Anweisung zur Überprüfung der Verzeichnisexistenz
Die Existenz des Verzeichnisses kann vom Bash-Skript wie bei der Datei auf zwei Arten überprüft werden. Eine davon ist die Verwendung des „-d“-Operators mit „[]“-Klammern. Eine andere Möglichkeit besteht darin, den Befehl „test“ und den Operator „-d“ zu verwenden. Es wird ein Verzeichnisname genommen und die Existenz des Verzeichnisses anhand der „if“-Bedingung mit dem „-d“-Operator überprüft. Dann wird ein anderer Verzeichnisname verwendet und die Existenz der Datei mithilfe der „if“-Anweisung mit dem „test“-Befehl und dem „-d“-Operator überprüft.
#!/bin/bash#Nehmen Sie einen Verzeichnisnamen
lesen -P „Geben Sie einen Verzeichnisnamen ein:“ du1
#Überprüfen Sie, ob das Verzeichnis existiert oder nicht, ohne „test“ zu verwenden
Wenn [ -D $dir1 ]
Dann
Echo ' $dir1 Verzeichnis existiert.“
anders
Echo ' $dir1 Verzeichnis existiert nicht.“
Sei
#Neue Zeile hinzufügen
Echo
#Nehmen Sie einen anderen Verzeichnisnamen
lesen -P „Geben Sie einen anderen Verzeichnisnamen ein:“ dir2
#Überprüfen Sie mit „test“, ob die Datei existiert oder nicht
Wenn prüfen -D $dir2
Dann
Echo ' $dir2 Verzeichnis existiert.“
anders
Echo ' $dir2 Verzeichnis existiert nicht.“
Sei
Ausgabe :
Die folgende Ausgabe erscheint nach der Ausführung des Skripts mit den Verzeichnisnamen „temp“ und „files“. Laut Ausgabe sind beide Verzeichnisse am aktuellen Speicherort vorhanden. Anschließend wird der Befehl „ls“ ausgeführt, um den Inhalt der Verzeichnisse zu überprüfen:
Die folgende Ausgabe erscheint nach der Ausführung des Skripts mit den Verzeichnisnamen „testing“ und „new“. Laut Ausgabe sind beide Verzeichnisse am aktuellen Speicherort nicht vorhanden. Dann zeigt die Ausgabe des Befehls „ls“, dass beide Verzeichnisse nicht existieren:
Verwendung der „If“-Anweisung mit Regex
Das folgende Skript zeigt die Methode zur Validierung der Eingabedaten mithilfe einer „if“-Anweisung mit der Regex. Dabei werden zwei Eingabewerte vom Benutzer übernommen und in den Variablen „$bookname“ und „$bookprice“ gespeichert. Die „if“-Bedingung wird im Skript verwendet, um zu prüfen, ob die Variable „$bookname“ alle alphabetischen Zeichen und die Variable „$bookprice“ eine Zahl enthält.
#!/bin/bash#Nehmen Sie den Buchnamen und den Preis vom Benutzer
Echo -N „Geben Sie den Buchnamen ein:“
lesen bookname
Echo -N „Geben Sie den Buchpreis ein:“
lesen Buchpreis
#Überprüfen Sie, ob der Buchname nur das Alphabet enthält
Wenn ! [ [ ' $bookname ' =~ [ A-Za-z ] ] ] ; Dann
Echo „Buchname ist ungültig.“
anders
Echo „Buchname ist gültig.“
Sei
#Überprüfen Sie, ob der Buchpreis nur Ziffern enthält
Wenn ! [ [ ' $Buchpreis ' =~ [ 0 - 9 ] ] ] ; Dann
Echo „Der Buchpreis darf nur Ziffern enthalten.“
anders
Echo „Buchpreis ist gültig.“
Sei
Ausgabe :
Nach der Ausführung des Skripts mit den Eingabewerten „Bash Programming“ als Buchname und 78 als Buchpreis erscheint folgende Ausgabe:
Nach der Ausführung des Skripts mit den Eingabewerten 90 als Buchname und „Bash“ als Buchpreis erscheint die folgende Ausgabe:
Verwendung der „Case“-Anweisung
Die „case“-Anweisung ist die Alternative zur „if-elif-else“-Anweisung, aber alle Aufgaben der „if-elif-else“-Anweisung können nicht mit der „case“-Anweisung erledigt werden. Die einfache Verwendung der „case“-Anweisung wird im folgenden Skript gezeigt. Als aktueller Monatswert wird vom Benutzer ein numerischer Wert übernommen. Anschließend wird der entsprechende Monat gedruckt, wenn in der „case“-Anweisung ein passender Wert gefunden wird. Andernfalls wird die Standardnachricht gedruckt.
#!/bin/bash#Nehmen Sie den aktuellen Monatswert in Zahl
lesen -P „Geben Sie den heutigen Monat als Zahl ein:“ b_Monat
#Drucken Sie den Text aus, bevor Sie den Monatsnamen drucken
Echo -N „Der aktuelle Monatsname ist“
#Finden Sie den passenden Monatsnamen basierend auf der Eingabe heraus und drucken Sie ihn aus
Fall $b_month In
1 | 01 ) Echo 'Januar.' ;;
2 | 02 ) Echo 'Februar.' ;;
3 | 03 ) Echo 'Marsch.' ;;
4 | 04 ) Echo 'April.' ;;
5 | 05 ) Echo 'Mai.' ;;
6 | 06 ) Echo 'Juni.' ;;
7 | 07 ) Echo 'Juli.' ;;
8 | 08 ) Echo 'August.' ;;
9 | 09 ) Echo 'September.' ;;
10 ) Echo 'Oktober.' ;;
elf ) Echo 'November.' ;;
12 ) Echo 'Dezember.' ;;
* ) Echo 'nicht gefunden.' ;;
esac
Ausgabe :
Nach der Ausführung des Skripts mit dem Wert 6 erscheint folgende Ausgabe:
Nach der Ausführung des Skripts mit dem Wert 09 erscheint folgende Ausgabe:
Nach der Ausführung des Skripts mit dem Wert 14 erscheint folgende Ausgabe:
Abschluss
In den 10 Beispielen dieses Tutorials werden verschiedene Verwendungsmöglichkeiten der bedingten Logik mithilfe der „if“- und „case“-Anweisungen gezeigt. Das Konzept der Verwendung der bedingten Logik in Bash wird neuen Bash-Benutzern nach der Lektüre dieses Tutorials erklärt.