Das Schreiben eines Bourne Again Shell (Bash) Skripts kann eine lohnende Erfahrung sein, insbesondere wenn Sie Logik hinzufügen, um seine Robustheit zu gewährleisten. Eine Möglichkeit, diese Logik zu integrieren und Ihr Skript intelligenter zu machen, besteht darin, bedingte Anweisungen zu verwenden, insbesondere „Bash if else“.
In diesem tiefen Tauchgang werden Sie die Kraft und Feinheiten der Bash if-else und case Anweisungen erfassen. Dies wird Ihnen helfen, fehlerfreie, intelligente Bash-Skripte zu erstellen. Wir werden auch einige bewährte Verfahren einstreuen, um sicherzustellen, dass Sie wie ein Profi skripten.
Bereit? Tauchen Sie ein und verbessern Sie Ihr Bash-Skripting-Können!
Die Bühne bereiten: Voraussetzungen
Um das Beste aus diesem Tutorial herauszuholen, sollten einige Grundlagen vorhanden sein:
- A Linux or Windows system armed with Bash. For those on Windows, the Windows Subsystem for Linux (WSL) is your best bet.
- A code/text editor to write and refine your ‘bash if else’ scripts.
Warum sollten Sie „bash if else“ Anweisungen nutzen?
Warum werden bedingte Anweisungen im Bash-Skripting so verehrt? Einfach ausgedrückt, verleihen sie Ihren Skripts Entscheidungsfähigkeiten basierend auf vordefinierten Bedingungen.
Zum Beispiel können Sie „bash if else“ verwenden, um zu überprüfen, ob eine Datei vorhanden ist, bevor Sie versuchen, sie zu löschen. Alternativ möchten Sie möglicherweise prüfen, ob ein Benutzer über die erforderlichen Berechtigungen verfügt, bevor Sie ihm den Zugriff auf eine Ressource gewähren.
Das Einbetten von Skripten mit ‚bash if else‘-Strukturen verstärkt nicht nur ihre Flexibilität, sondern auch ihre Wirksamkeit. Stellen Sie sich ein Skript vor, das darauf abzielt, alle Dateien in einem Ordner zu löschen. Mit ‚bash if else‘ können Sie gezielt nur diejenigen Dateien löschen, die älter als 30 Tage sind, während der Rest erhalten bleibt.
Einblick in die ‚bash if else‘-Anweisung
Jetzt lassen Sie uns die Einführung hinter uns und die Hände schmutzig machen. Wir werden mit einer der universell akzeptierten bedingten Anweisungen beginnen: der ‚bash if else‘-Anweisung.
Im Kern ist das ‚bash if else‘ ein Tor, um Bedingungen in Ihre Bash-Skripte einzufügen. Beachten Sie seine elegante Syntax unten:
- Es beginnt mit dem if-Schlüsselwort, gefolgt von den Bedingungen, die innerhalb von [[ ]] eingeschlossen sind. Anschließend wird der im ‚bash if else‘-Statement enthaltene Code ausgeführt, und es endet mit dem fi-Schlüsselwort.
- Das then-Schlüsselwort trennt die Bedingung von den Aktionen (oder Anweisungen), die ausgeführt werden, wenn die Bedingungen erfüllt sind. Dieser Aktionsblock kann mehrere Zeilen umfassen, die durch Semikolons (;) getrennt sind.
Stellen Sie sich vor, Sie erstellen ein Anmeldesystem. Es fordert den richtigen Benutzernamen an, bevor der Zugriff gewährt wird:
1. Starten Sie Ihr Terminal und erstellen Sie eine neue bash_if_demo.sh Datei unter Verwendung Ihres bevorzugten Texteditors. Dies wird unser Spielplatz sein, um ‚bash if else‘-Anweisungen zu verstehen.
2. Fügen Sie das unten stehende Beispiel für „bash if else“ in Ihre Datei bash_if_demo.sh ein. Sobald dies eingefügt ist, speichern Sie die Änderungen und beenden Sie den Editor.
Das Beispiel-Skript „bash if else“ fordert nach einem Benutzernamen. Wenn der erwartete Benutzername eingegeben wird, wird eine Begrüßungsnachricht angezeigt, ergänzt durch das aktuelle Datum und die aktuelle Uhrzeit.
Die Aufrechterhaltung einer Aufzeichnung über das Datum und die Uhrzeit von Benutzerzugriffsversuchen kann für zukünftige Analysen von unschätzbarem Wert sein.
Die einleitende Zeile #!/bin/bash (auch als Shebang bekannt) gibt dem System an, welcher Interpreter für die Verarbeitung des nachfolgenden Codes im Skript verwendet werden soll. Hier haben wir uns für „bash“ entschieden.
3. Nun wollen wir unser ‚bash if else‘ Skript auf die Probe stellen. Führen Sie den folgenden Befehl aus:
Denken Sie daran, unabhängig von der verwendeten Bash-Shell-Variante Ihren Skriptnamen mit ‚bash‘ zu präfixieren. Dadurch verwendet das System Bash zur Skriptausführung.
Geben Sie „ATA“ ein und drücken Sie die Eingabetaste. Das Ergebnis sollte wie folgt aussehen:

Wenn Sie etwas anderes als „ATA“ eingeben, wird die Begrüßungsnachricht nicht im Ausgabefenster angezeigt. Es werden nur das aktuelle Datum und die aktuelle Uhrzeit angezeigt. Dieses Verhalten ist auf die ‚bash if else‘-Anweisung zurückzuführen, die auf eine genaue Übereinstimmung mit dem Wert in der Variablen $NAME prüft.
Beachten Sie, dass ‚bash if else‘-Anweisungen Groß- und Kleinschreibung beachten. Daher sind „ata“, „aTa“, „Ata“ usw. von „ATA“ unterschiedlich.

Testen Sie Ihre ‚bash if else‘-Skripte kontinuierlich mit verschiedenen Eingaben. Dadurch wird sichergestellt, dass die Skripte wie erwartet funktionieren.
Tiefere Einblicke: Verschachtelte ‚bash if else‘-Anweisungen
Sie haben bereits die Grundlagen des Erstellens von ‚bash if else‘-Anweisungen verstanden. Während dieses grundlegende Wissen für einfache Aufgaben ausreicht, erfordern komplexe Skripte oft fortgeschrittene Konstrukte. Hier kommen verschachtelte ‚bash if else‘-Anweisungen ins Spiel. Grundsätzlich handelt es sich um eine ‚if‘-Anweisung, die eine oder mehrere zusätzliche ‚if‘-Anweisungen enthält.
Die folgende Struktur veranschaulicht die grundlegende Syntax für verschachtelte ‚bash if else‘-Anweisungen. Hier umfasst die äußere if [[ Bedingungen ]]
-Klausel ausführbaren Code nur bei Erfüllung der Bedingung. In unserem Kontext ist der verschachtelte Code eine weitere ‚if‘-Anweisung.
if [[ Bedingungen ]]
– Dies repräsentiert die externe ‚bash if else‘-Anweisung. Der verschachtelte Code (eine weitere ‚if‘-Anweisung) wird nur ausgeführt, wenn die angegebene Bedingung wahr ist.if [[ Bedingung2 ]]
– Dies repräsentiert die interne ‚bash if else‘-Klausel. Hier wird Code ausgeführt, wenn und nur wenn beide Bedingungen erfüllt sind.
Lassen Sie uns tiefer gehen. Wir werden unser vorheriges Beispiel für ‚bash if else‘ verbessern, indem wir eine if
-Anweisung einbeziehen, die nach einem Passwort fragt:
1. Erstellen Sie zunächst eine neue Datei mit dem Titel bash_nested_if_demo.sh in Ihrem bevorzugten Texteditor.
2. Übertragen Sie den unten bereitgestellten Code für ‚bash if else‘ in die Datei bash_nested_if_demo.sh, speichern Sie Ihre Änderungen und schließen Sie den Editor.
Dieser ‚bash if else‘-Code fordert sowohl einen Namen als auch ein Passwort an. Sollten die Bedingungen für den Namen und das Passwort übereinstimmen, wird eine bestimmte Meldung angezeigt. Wenn keine Übereinstimmung vorliegt, zeigt die Ausgabe nur das aktuelle Datum und die Uhrzeit an.
3. Jetzt wollen wir dieses ‚bash if else‘-Skript in Aktion sehen. Führen Sie den Befehl unten aus:
Für optimale Ergebnisse geben Sie ATA als Benutzernamen und pwd123 als Passwort ein.

Wenn Ihre Eingaben von „ATA“ oder „pwd123“ abweichen, erhalten Sie lediglich Rückmeldungen zum aktuellen Datum und zur Uhrzeit. Dies liegt daran, dass die ‚bash if else‘-Struktur die Erfüllung beider Bedingungen erfordert.

Entschlüsselung von ‚Bash If Else‘-Anweisungen
‚Bash if else‘-Anweisungen sind Eckpfeiler im Bash-Skripting und bieten entscheidende Fähigkeiten für Ihre Skripte. Es ist jedoch entscheidend zu verstehen, dass die Verwendung von ‚if‘-Anweisungen nicht ohne ihre Nachteile ist.
Die offensichtliche Herausforderung besteht darin, dass übermäßige Abhängigkeit von ‚if‘-Anweisungen Ihren Code überladen kann, was ihn mühsam und herausfordernd macht, insbesondere wenn mehrere verschachtelte ‚if‘-Anweisungen ins Spiel kommen. Solche Skripte riskieren, zu „Spaghetti-Code“ zu werden, gekennzeichnet durch reduzierte Lesbarkeit und erhöhte Komplexität.
Wie optimieren Sie also Ihr ‚Bash if else‘-Skript, um verständlich zu bleiben? Entscheiden Sie sich für ‚if else‘-Anweisungen anstelle einer Vielzahl von verschachtelten ‚if‘-Anweisungen. Das Schlüsselwort ‚else‘ bietet die Möglichkeit, einen Codeblock zu definieren, der ausgeführt wird, wenn die ‚if‘-Bedingung nicht erfüllt ist.
Um eine klarere Perspektive zu erhalten, betrachten Sie die Syntax für ‚Bash If Else‘ unten, wo:
if [[ Bedingungen ]]
– Hier enthält die ‚Bash if else‘-Anweisung den Code (Anweisung1
), der nur ausgeführt wird, wenn die angegebene Bedingung gültig ist.else
– Dies ist Teil der ‚Bash if else‘-Struktur. Dieelse
-Anweisung umfasst den Code (Anweisung2
), der ausgeführt wird, wenn die Bedingung in der vorherigenif
-Klausel nicht erfüllt ist.
Stellen Sie sich vor, Sie erstellen ein einfaches ‚Bash if else‘-Spiel, bei dem das System eine zufällige Zahl vom Benutzer erwartet:
1. Beginnen Sie damit, eine neue Datei mit dem Namen bash_if_else_demo.sh zu erstellen.
2. Integrieren Sie den folgenden ‚Bash if else‘-Code in Ihre Datei bash_if_else_demo.sh, speichern Sie die Änderungen und verlassen Sie dann das Programm.
Der zugrunde liegende ‚Bash if else‘-Code fordert den Benutzer nach seiner Glückszahl auf. Wenn die Eingabe gerade ist, wird die Nachricht „Sie haben gewonnen!“ angezeigt. Andernfalls löst eine ungerade Zahl die Ausgabe „Sie haben verloren!“ aus.
3. Um das ‚bash if else‘-Skript in Aktion zu sehen, führen Sie den folgenden Befehl aus:
Bei Eingabe einer geraden Ziffer sollten Sie die Meldung „Sie haben mit ‚bash if else‘ gewonnen!“ sehen. Im Gegensatz dazu sollte die Eingabe einer ungeraden Ziffer das Feedback „Sie haben mit ‚bash if else‘ verloren!“ ergeben.

Um das ‚bash if else‘-Skript zu bereichern, erwägen Sie die Integration eines Abschnitts, der feststellt, ob der Benutzer einen Buchstaben oder ein bestimmtes Zeichen anstelle einer Zahl eingibt.
Dekodierung von ‚Bash If Else‘ und Case-Anweisungen
Zu diesem Zeitpunkt haben Sie ein paar Methoden erkundet, um Entscheidungen in Ihren Bash-Skripten zu treffen, nämlich ‚bash if else‘-Anweisungen. Aber Bash bietet eine andere Möglichkeit zur Entscheidungsfindung – die case
-Anweisung.
Ähnlich wie bei ‚bash if else‘ ist die case
-Anweisung darauf spezialisiert, Code-Sequenzen basierend auf festgelegten Bedingungen auszuführen. Ein bemerkenswerter Vorteil der case-Anweisung ist ihre schiere Kürze und Klarheit, insbesondere im Vergleich zu verschachtelten ‚bash if else‘-Szenarien.
Um die Alternative von ‚bash if else‘ vollständig zu erfassen, wollen wir uns in die Syntax der Fallanweisung vertiefen:
case $VAR in
– Dieses Segment des Fallkonstrukts bewertet die Variable$VAR
gegen definierte Muster, bis eine Übereinstimmung gefunden wird.Muster1)
undMuster2)
– Dies sind die Kriterien, gegen die getestet wird, und sobald eine Übereinstimmung erkannt wird, tritt der entsprechende Code (Anweisung1
oderAnweisung2
) in Aktion.esac
– Beendet die Fallstruktur.
Stellen Sie sich vor, Sie entwerfen ein ‚bash if else‘ Skript, in dem Benutzer ihre Ländernamen eingeben, und als Antwort darauf zeigt das Skript die vorherrschende Sprache dieses Landes an.
1. Beginnen Sie damit, eine Datei namens bash_case_demo.sh zu erstellen.
2. Integrieren Sie den unten bereitgestellten ‚bash if else‘ Code in Ihre Datei bash_case_demo.sh, speichern Sie sie und beenden Sie sie dann.
Das resultierende ‚bash if else‘ Skript wird den Benutzer nach dem Namen seines Landes fragen und basierend auf den ‚case‘-Mustern die primäre Sprache drucken, die in dem genannten Land gesprochen wird.
3. Um dieses ‚bash if else‘ Skript aus erster Hand zu erleben, verwenden Sie den folgenden Befehl:
Sie werden feststellen, dass das Skript die Sprache gemäß dem vom Benutzer gewählten Land genau hervorhebt.
Wenn das angegebene Land nicht mit den festgelegten Mustern übereinstimmt, wird das Standard (*) Muster ausgelöst, was zur Ausgabe „unknown“ führt.

Zusammenfassung von Bash-Bedingungsanweisungen
In diesem Leitfaden haben Sie die Reise angetreten, ‚bash if else‘ und andere bedingte Anweisungen in Bash zu verstehen. Vom einfachen ‚if‘-Statement bis hin zu den komplexen ‚if-else‘ und ‚case‘-Anweisungen sind Sie nun mit den wesentlichen Werkzeugen für effektives Bash-Skripting ausgestattet.
Mit diesen Grundlagen von ‚bash if else‘ können Sie Bash-Skripte effizienter erstellen und damit die Fehlermarge reduzieren.
Aber denke daran, dies ist nur die Spitze des Eisbergs. Bash bietet eine Vielzahl von bedingten Anweisungen. Vielleicht solltest du dich mit der Bash elif-Anweisung und den &&, OR und || Operatoren näher befassen, um tiefere Einblicke zu erhalten. Mit Hingabe wird das Meistern des Bash-Scriptings bald in greifbarer Nähe sein!