So beherrschen Sie die bedingte Logik in Bash

So Beherrschen Sie Die Bedingte Logik In Bash



Die Verwendung bedingter Logik ist ein sehr wesentlicher Bestandteil jeder Programmiersprache. Die bedingte Logik kann in Bash auf verschiedene Arten implementiert werden, um die Programmierprobleme zu lösen. In diesem Tutorial werden die Methoden zur Verwendung der bedingten Logik in Bash durch die verschiedenen Arten von „if“- und „case“-Anweisungen zum Vergleichen der Zeichenfolgen- und numerischen Werte, zum Überprüfen des Variableninhalts, zum Überprüfen der Existenz der Datei oder des Verzeichnisses usw. gezeigt .

Inhaltsangabe:

  1. Verwendung der „If“-Anweisung
  2. Verwendung der „If-Else“-Anweisung
  3. Verwendung der „If-Elif-Else“-Anweisung
  4. Verwendung der „If“-Anweisung zum Überprüfen einer leeren Variablen
  5. Verwendung der „If“-Anweisung mit logischem Operator
  6. Verwendung der verschachtelten „If“-Anweisungen
  7. Verwendung der „If“-Anweisung zur Überprüfung der Dateiexistenz
  8. Verwendung der „If“-Anweisung zur Überprüfung der Verzeichnisexistenz
  9. Verwendung der „If“-Anweisung mit Regex
  10. 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:



  p1





Zur Spitze gehen

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:

  S. 2-1

Die folgende Ausgabe erscheint nach der Ausführung des vorherigen Skripts, wenn „blau“ als Eingabe verwendet wird:

  S. 2-2

Zur Spitze gehen

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:

  S. 3-1

Nach der Ausführung des Skripts mit dem Wert 9078 erscheint die folgende Ausgabe:

  S. 3-2

Zur Spitze gehen

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:

  S. 4-1

Wenn kein Eingabewert übernommen wird, erscheint nach der Ausführung des Skripts folgende Ausgabe:

  S. 4-2

Zur Spitze gehen

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:

  S. 5-1

Nach der Ausführung des Skripts mit dem Eingabewert „BBA-56“ erscheint die folgende Ausgabe:

  S. 5-2

Zur Spitze gehen

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:

  S. 6-1

Die folgende Ausgabe erscheint, wenn 78 als Theorienoten und 45 als Labornoten angenommen werden. Hier gibt die zweite „Wenn“-Bedingung „Falsch“ zurück:

  S. 6-2

Die folgende Ausgabe erscheint, wenn 67 als Theorienoten und 56 als Labornoten angenommen werden. Hier geben beide „Wenn“-Bedingungen „wahr“ zurück:

  S. 6-3

Die folgende Ausgabe erscheint, wenn 50 als Theorienoten und 80 als Labornoten angenommen werden. Hier gibt die erste „Wenn“-Bedingung „Falsch“ zurück:

  S. 6-4

Zur Spitze gehen

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:

  S. 7-1

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:

  S. 7-2

Zur Spitze gehen

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:

  S. 8-1

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:

  S. 8-2

Zur Spitze gehen

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:

  S. 9-1

Nach der Ausführung des Skripts mit den Eingabewerten 90 als Buchname und „Bash“ als Buchpreis erscheint die folgende Ausgabe:

  S. 9-2

Zur Spitze gehen

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:

  S. 10-1

Nach der Ausführung des Skripts mit dem Wert 09 erscheint folgende Ausgabe:


  S. 10-2

Nach der Ausführung des Skripts mit dem Wert 14 erscheint folgende Ausgabe:

  S. 10-3

Zur Spitze gehen

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.