• Product Updates

Wie verwendet man if-Anweisungen in Bash? (Bedingte Logik in Bash)

Wie verwendet man if-Anweisungen in Bash? (Bedingte Logik in Bash)

Table of contents

Was sind Bash-if-Anweisungen? (if-Anweisung in Bash)

In der Shell-Skriptierung sind Bash-if-Anweisungen für die Entscheidungsfindung unverzichtbar. Sie ermöglichen es Skripten, je nach Bedingungen wie Benutzereingaben, Befehlsergebnissen oder Systemzuständen unterschiedlich zu reagieren.

Die Grundstruktur einer Bash-if-Anweisung beginnt mit dem Schlüsselwort „if“, gefolgt von einer Bedingung, dem Schlüsselwort „then“ und den Befehlen, die ausgeführt werden sollen, wenn die Bedingung wahr ist. Um weitere Möglichkeiten abzudecken, können Sie ein „elif“ für zusätzliche Prüfungen und ein „else“ als Fallback hinzufügen, wenn keine der Bedingungen erfüllt ist.

Durch die Kombination von if-Anweisungen mit anderen Bash-Funktionen können Sie leistungsstarke, flexible Skripte erstellen, die eine Vielzahl von Aufgaben automatisieren.

Was ist Bash-Skripting?

Bevor wir uns mit Bash-Skripten befassen, wollen wir verstehen, was Bash-Skripting ist.

Stellen Sie sich Ihren Computer als eine Fabrik vor, in der Arbeiter verschiedene Aufgaben ausführen – Teile montieren, Produkte verpacken oder Materialien sortieren. Bash-Skripting ist wie die Erstellung eines Betriebshandbuchs, das jedem Arbeiter klare Anweisungen gibt, wie er seine Aufgaben in der richtigen Reihenfolge ausführen soll. Anstatt jedem Arbeiter jedes Mal einzeln zu sagen, was er tun soll, geben Sie ihm einfach das Handbuch – das Bash-Skript – und er folgt ihm automatisch.

Wenn Sie das Skript ausführen, fungiert die Bash-Shell wie der Fabrikleiter, der die Arbeiter Schritt für Schritt anleitet und sicherstellt, dass jede Aufgabe korrekt erledigt wird. Dies hilft Ihnen, sich wiederholende Prozesse wie Datenanalyse, Dateiorganisation oder die Verwaltung von Systemkonfigurationen zu automatisieren.

Bevor die Fabrik jedoch den Betrieb aufnehmen kann, muss alles an seinem Platz sein – Materialien müssen bereitstehen, Maschinen müssen kalibriert sein und die Arbeiter müssen über ihre Aufgaben informiert sein. Ebenso muss Ihr Skript, damit es ausgeführt werden kann, ordnungsgemäß eingerichtet sein – ein entscheidender Schritt ist es, sicherzustellen, dass es über die richtigen Berechtigungen zur Ausführung verfügt und dass alle Systeme startbereit sind.

Wie funktionieren Bash-if-Anweisungen?

In der Bash-Skriptierung spielen if-Anweisungen, insbesondere die bash if-Anweisung, eine wichtige Rolle bei der Steuerung des Skriptverhaltens unter bestimmten Bedingungen. Sie ermöglichen es Ihrem Skript, Entscheidungen zu treffen und je nach Testergebnis unterschiedliche Ausführungswege zu wählen.

Wenn eine if-Anweisung auftritt, prüft Bash, ob eine bestimmte Bedingung wahr ist. Ist dies der Fall, werden die Befehle im then-Block ausgeführt.

Aber was passiert, wenn die Bedingung falsch ist? Das Skript prüft dann alle folgenden „elif“-Bedingungen (else-if). Wenn sich eine davon als wahr herausstellt, werden stattdessen die zugehörigen Befehle ausgeführt.

Und wenn keine der Bedingungen, weder „if“ noch „elif“, erfüllt ist, prüft Bash, ob am Ende ein else-Block vorhanden ist. Falls vorhanden, führt es die Befehle in diesem Block als Fallback aus.

Im Wesentlichen ermöglicht die bashif-Anweisung die Entscheidungsfindung innerhalb Ihres Skripts. Die zu prüfende Bedingung kann von vielen Faktoren abhängen, wie zum Beispiel dem Wert einer Variablen, dem Ergebnis eines Vergleichs oder dem Erfolg oder Misserfolg eines Befehls.

Durch die Verwendung von if, elif und else können Sie Logik in Ihre Skripte einbauen, die sich an verschiedene Situationen anpasst und diese flexibler und intelligenter macht.

Die Syntax der Bash-if-Anweisung verstehen

Bash-Skripting folgt einem bestimmten Regelwerk, der sogenannten Syntax, die festlegt, wie Befehle und Skripte strukturiert sind. Sich mit dieser Syntax vertraut zu machen, ist unerlässlich, um funktionale und effiziente Bash-Skripte zu schreiben. Schauen wir uns die Schlüsselelemente genauer an:

Kernkomponenten der Syntax der Bash-if-Anweisung

Befehle: Dies sind die ausführbaren Aktionen – entweder in die Shell integriert oder externe Programme –, die Aufgaben ausführen. Diese Befehle wirst du in deinen Skripten am häufigsten verwenden.

Argumente: Argumente liefern zusätzliche Informationen für Befehle und helfen dabei, deren Verhalten zu definieren. Man kann sie sich als Feinabstimmungsdetails für die Befehlsausführung vorstellen.

Variablen: Variablen dienen zum Speichern und Bearbeiten von Daten. Sie machen Ihre Skripte dynamisch, indem sie die Wiederverwendung und Änderung von Werten ermöglichen.

Umleitung: Mit der Umleitung können Sie steuern, wohin die Ausgabe eines Befehls geleitet wird – sei es in eine Datei, ein anderes Programm oder gar ins Leere. Sie hilft auch bei der Verwaltung von Eingabequellen und Fehlermeldungen.

Pipes (|): Eine Pipe verbindet die Ausgabe eines Befehls direkt mit der Eingabe eines anderen. Dies ermöglicht leistungsstarke, verkettete Operationen in einer einzigen Zeile.

Kontrollstrukturen: Diese steuern den Ablauf des Skripts. Schleifen, Bedingungen und Funktionen fallen alle in diese Kategorie. Sie sind unerlässlich, um Logik in Ihre Skripte einzubauen.

Kommentare: Kommentare (mit # gekennzeichnet) sind Anmerkungen in Ihrem Code, die von der Shell ignoriert werden. Verwenden Sie sie, um zu erklären, was Ihr Code tut – hilfreich für die Fehlersuche oder die Zusammenarbeit mit anderen.

Grundlegender Aufbau einer if-Anweisung in Bash

So wird eine if-Anweisung in Bash typischerweise geschrieben:

if [ Bedingung ]
then
Befehl1
Befehl2
...
elif [ weitere_Bedingung ]
then
BefehlA
BefehlB
...
else
Fallback-Befehl1
Fallback-Befehl2
...
fi

Wie funktionieren Bash-if-Anweisungen?

if [ Bedingung ]: Diese Zeile prüft eine Bedingung. Ist sie wahr, führt das Skript die Befehle aus, die im then-Block folgen.

elif (else if): Wenn die ursprüngliche if-Bedingung nicht erfüllt ist, prüft Bash die elif-Bedingung. Ist diese wahr, führt es die zugehörigen Befehle aus.

else: Wenn weder die if- noch die elif-Bedingung wahr ist, weicht das Skript auf den else-Block aus und führt diese Befehle aus.

fi: Dieses Schlüsselwort markiert das Ende des Bash-if-Anweisungsblocks – es steht wörtlich für „if“ rückwärts.

Wichtige Regeln für Bash-if-Bedingungen, die Sie kennen sollten

Beim Schreiben von Bash-if-Anweisungen mit bedingter Logik ist es wichtig, einige wichtige Regeln zu befolgen, um frustrierende Fehler zu vermeiden. Hier sind drei grundlegende Vorgehensweisen, die Ihnen helfen, sauberere und zuverlässigere Bash-Bedingungen zu schreiben.

1. Verwenden Sie immer Leerzeichen innerhalb von eckigen Klammern

Bei der Bash-Skripterstellung ist die Leerzeichenverwendung entscheidend. Wenn Sie eckige Klammern [ ] für Bedingungen verwenden, achten Sie darauf, Leerzeichen zwischen den Klammern und der Bedingung selbst zu setzen.

Falsch:

if [$foo -ge 3]; then

Richtig:

if [ $foo -ge 3 ]; then

Warum das wichtig ist: Bash interpretiert Bedingungen auf der Grundlage einer bestimmten Syntax. Ohne korrekte Leerzeichen interpretiert es den Ausdruck falsch und gibt einen Fehler aus oder verhält sich unerwartet.

2. Verwenden Sie Semikolons oder Zeilenumbrüche vor Schlüsselwörtern in Bash-if-Anweisungen

Steuerungsschlüsselwörter wie then, else, elif und fi müssen entweder in einer neuen Zeile beginnen oder auf ein Semikolon folgen. Das Überspringen dieser Formatierung führt zu Syntaxfehlern.

Falsch:

if [ $foo -ge 3]then

Richtig:

if [ $foo -ge 3 ]; then

Tipp: Das Beenden der Bedingung mit einem Semikolon oder einem Zeilenumbruch vor „then“ stellt sicher, dass die Shell das Skript korrekt interpretiert.

3. String-Variablen in Bash-if-Anweisungen oder -Bedingungen in Anführungszeichen setzen

Umschließe String-Variablen immer mit doppelten Anführungszeichen, wenn du sie in bedingten Anweisungen vergleichst. Dies vermeidet Probleme, wenn die Zeichenkette Leerzeichen oder andere Sonderzeichen enthält.

Falsch:

if [ $username == „admin“ ]; then

Richtig:

if [ „$username“ == „admin“ ]; then

Grund: Das Setzen von Anführungszeichen um Variablen verhindert Worttrennungen und unerwartete Fehler, insbesondere beim Umgang mit Benutzereingaben oder Daten, die Leerzeichen enthalten.

Erläuterung der Syntaxarten für if-Anweisungen in Bash

In der Bash-Skripting-Sprache stehen verschiedene Syntaxen zum Schreiben von bedingten Anweisungen zur Verfügung, je nachdem, was Sie überprüfen möchten – Dateien, Zeichenfolgen, Zahlen oder komplexe Ausdrücke. Sehen wir uns die wichtigsten Typen an:

Syntax mit einer Klammer ([ ... ])

Dies ist die traditionelle Art, Bedingungen in Bash zu schreiben, und unterstützt Überprüfungen von Dateien, Zeichenfolgen und Zahlen.

Dateiüberprüfungen mit einer Bash-if-Anweisung

Wird verwendet, um Eigenschaften von Dateien zu ermitteln. Verwenden wir das Flag -d, um zu prüfen, ob eine Datei ein Verzeichnis statt eines symbolischen Links ist:

if [ -d myfolder ]; then
echo „Die Datei ist ein Verzeichnis.“
Fi
  • -d prüft, ob der angegebene Pfad (in diesem Fall myfolder) ein Verzeichnis ist.
  • Wenn die Bedingung wahr ist, gibt das Skript aus, dass es sich um ein Verzeichnis handelt.

Zeichenfolgenvergleiche mit der Bash-if-Anweisung:

Nützlich, um zu prüfen, ob eine Zeichenkette leer ist oder mit einer anderen Zeichenkette übereinstimmt.

username=„admin“
status=„inactive“
if [ -n „$username“ ]; then
echo „Benutzername ist angegeben.“
fi
if [ „$status“ != ‚active‘ ]; then
echo „Status ist nicht aktiv.“
fi
  • -n „$username“ prüft, ob die Zeichenkette nicht leer ist.
  • „$status“ != „active“ prüft, ob die Zeichenfolgenvariable status nicht gleich ‚active‘ ist.

Numerische Bedingungen mit der Bash-if-Anweisung:

Wird zum Vergleichen von Ganzzahlen verwendet.

if [ $num -lt 10 ]; then
echo „Die Zahl ist kleiner als 10.“
fi

Operatoren wie -lt, -gt, -eq werden für Vergleiche verwendet.

Doppelklammer-Syntax ([[ ... ]])

Dies ist eine erweiterte Version der Einfachklammer-Syntax mit zusätzlichen Funktionen und mehr Flexibilität.

Wildcard-Abgleich:

Ermöglicht das Abgleichen von Mustern mit *, ähnlich wie bei Wildcards.

if [[ „$text“ == *match* ]]; then
echo „Die Zeichenkette enthält ‚match‘.“
fi

Vermeidet Worttrennung:

Sie müssen Variablen mit Leerzeichen nicht in Anführungszeichen setzen – sie werden sicher verarbeitet.

if [[ $phrase != „hello“ ]]; then
echo „Die Phrase lautet nicht ‚hello‘.“
fi

Keine Dateinamenerweiterung:

Muster wie *.sh werden nicht zu Dateinamen erweitert. Sie werden wörtlich behandelt.

Daher funktioniert eine Überprüfung wie [[ -a *.sh ]] nicht auf dieselbe Weise wie außerhalb doppelter Klammern.

Kombinieren von Bedingungen:

Logische Operatoren wie && und || können verwendet werden, um mehrere Überprüfungen zu kombinieren.

if [[ $num -eq 3 && $text == „yes“ ]]; then
echo „Bedingungen sind erfüllt.“
fi

Reguläre Ausdrücke:

Ermöglicht den Abgleich mit regulären Ausdrücken mithilfe von =~.

if [[ „$input“ =~ ^[0-9]+$ ]]; then
echo „Die Eingabe ist eine Zahl.“
fi

Syntax mit doppelten Klammern ((( ... )))

Diese Syntax wurde speziell für numerische Auswertungen entwickelt und ähnelt der in traditionellen Programmiersprachen.

Arithmetische Vergleiche:

Dienen zur Auswertung numerischer Ausdrücke mit bekannten Symbolen.

if (( num <= 6 )); then
echo „Die Zahl ist 6 oder kleiner.“
fi

Unterstützte logische Operatoren:

Unterstützt && und ||, wodurch zusammengesetzte Bedingungen leichter lesbar sind.

if (( num > 0 && num < 50 )); then
echo „Die Zahl liegt zwischen 1 und 49.“
fi

Diese Syntax ist im Wesentlichen eine übersichtlichere und ausdrucksstärkere Methode, um mathematische Logik in Shell-Skripten auszuführen.

Bash-if-Anweisungen oder Bash-Bedingungen verstehen (if-Anweisung in Bash)

Bash-Skripting bietet mehrere Möglichkeiten zur Entscheidungsfindung. Mit diesen Werkzeugen können Sie steuern, wie sich Ihr Skript unter verschiedenen Bedingungen verhält. In diesem Leitfaden werden wir gängige Arten von bedingten Anweisungen untersuchen, beginnend mit den einfachsten bis hin zu fortgeschritteneren Strukturen.

Einfache Bash-if-Anweisung

Mit der einfachen if-Anweisung können Sie eine Bedingung prüfen und bestimmte Befehle nur ausführen, wenn die Bedingung wahr ist.

Syntax:

if [ Bedingung ]; then
# Befehle, die ausgeführt werden sollen, wenn die Bedingung wahr ist
fi

Beispiel:

if [ -f „notes.txt“ ]; then
echo „notes.txt existiert im Verzeichnis.“
fi

In diesem Fall prüft das Skript, ob notes.txt als reguläre Datei existiert. Ist dies der Fall, gibt es eine Meldung aus.

Verschachtelte if-Anweisung (Bash if mit mehreren Bedingungen)

Eine verschachtelte if-Anweisung ist einfach eine if-Anweisung, die innerhalb eines anderen if-Blocks platziert ist. Diese Struktur ermöglicht tiefere Entscheidungsbäume, bei denen eine zweite Bedingung nur geprüft wird, wenn die erste wahr ist.

Syntax:

if [ Bedingung1 ]; then
if [ Bedingung2 ]; then
# Befehle, die ausgeführt werden sollen, wenn sowohl Bedingung1 als auch Bedingung2 wahr sind
fi
fi

Beispiel:

if [ -d „projects“ ]; then
if [ -w ‚projects‘ ]; then
echo „Das Verzeichnis ‚projects‘ existiert und ist beschreibbar.“
fi
fi

Hier prüft das Skript zunächst, ob das Verzeichnis „projects“ existiert, und anschließend, ob es Schreibrechte besitzt.

If-Else-Anweisung

Mit dieser Konstruktion können Sie zwischen zwei Aktionssätzen wählen: einem für den Fall, dass eine Bedingung wahr ist, und einem für den Fall, dass sie falsch ist.

Syntax:

if [ Bedingung ]; then
# wenn wahr
else
# wenn falsch
fi

Beispiel:

if [ -n „$username“ ]; then
echo „Hallo, $username!“
else
echo „Benutzername ist nicht gesetzt.“
fi

Wenn die Variable username einen Wert hat (d. h. nicht leer ist), wird eine Begrüßung ausgegeben. Andernfalls wird eine Ausweichmeldung angezeigt.

If-Elif-Else-Anweisung (bash if-Anweisung)

Verwenden Sie diese, wenn Sie mehrere Bedingungen nacheinander auswerten müssen. Sobald eine Bedingung als wahr ausgewertet wird, wird der entsprechende Block ausgeführt, und die übrigen werden übersprungen.

Syntax:

if [ Bedingung1 ]; then
# Block 1
elif [ Bedingung2 ]; then
# Block 2
else
# Fallback-Block
fi

Beispiel:

if [ „$day“ == „Monday“ ]; then
echo „Die Arbeitswoche beginnt!“
elif [ „$day“ == ‚Friday‘ ]; then
echo „Das Wochenende steht vor der Tür!“
else
echo „Es ist einfach ein ganz normaler Tag.“
fi

Hier reagiert das Skript je nach Wochentag unterschiedlich.

Case-Anweisung

Die Case-Struktur ist ideal, wenn Sie je nach dem Wert einer einzelnen Variablen unterschiedliche Aktionen ausführen möchten – ähnlich wie bei einer switch-Anweisung in anderen Programmiersprachen.

Syntax:

case $variable in
Muster1)
# Befehle für Muster1
;;
Muster2)
# Befehle für Muster2
;;
*)
# Standardbefehle
;;
esac

Beispiel:

read -p „Gib eine Note ein: “ note
case $note in
A)
echo „Hervorragende Arbeit!“
;;
B)
echo „Gute Arbeit!“
;;
C)
echo „Du hast bestanden.“
;;
*)
echo „Unbekannte Note.“
;;
esac

Je nach eingegebenem Wert gibt das Skript eine andere Meldung aus. Wenn die Eingabe keiner vordefinierten Note entspricht, wird eine Standardantwort ausgegeben.

Fazit

In diesem Artikel haben wir die Grundlagen von Bash-if-Anweisungen und ihre verschiedenen Formen untersucht, einschließlich verschachtelter Strukturen und fallbasierter Entscheidungsfindung. Diese Werkzeuge können die Übersichtlichkeit und Flexibilität Ihrer Bash-Skripte erheblich verbessern und ermöglichen es Ihnen, dynamischere und reaktionsschnellere Befehlszeilenprogramme zu erstellen.

Wächst Ihr Unternehmen über die Kapazitäten eines VPS hinaus? Steigen Sie auf einen dedizierten Server um und erschließen Sie das volle Potenzial Ihrer Online-Aktivitäten. Mit BlueServers erhalten Sie eine leistungsstarke, vollständig anpassbare Hosting-Umgebung, die genau auf Ihre Leistungsanforderungen zugeschnitten ist. Genießen Sie die Freiheit einer dedizierten Infrastruktur, die auf Skalierbarkeit, Zuverlässigkeit und vollständige Kontrolle ausgelegt ist. Ganz gleich, ob Sie stark frequentierte Websites oder ressourcenintensive Anwendungen betreiben oder sensible Daten verwalten – unsere dedizierten Server bieten die Leistung und Sicherheit, die Ihr Unternehmen benötigt – und das alles mit unbegrenztem Datenverkehr. Entdecken Sie den Unterschied, den ein dedizierter Server ausmachen kann. Entdecken Sie unsere Angebote unterBlueServers.com und bringen Sie Ihre Infrastruktur auf die nächste Stufe.

Share

About the authors


scale 1
Ready to scale?

Start for free and unlock high-performance infrastructure with instant setup.

Get started arrow button

Help us improve — share your feedback

Your opinion helps us build a better service.