50 % Rabatt auf alle Pläne, begrenzte Zeit. Ab $2.48/mo
Noch 10 min
Server & Betriebssysteme

Bash-If-Anweisung: Syntax, Varianten, Anwendungsfälle, Befehle und mehr!

Pius Bodenmann By Pius Bodenmann 10 Min. Lesezeit Aktualisiert am 28. Januar 2024
Bash-Scripting

In der Shell-Programmierung sind Bash-if-Anweisungen ein grundlegendes Werkzeug: Sie ermöglichen es, Skripte je nach Bedingung unterschiedliche Pfade einschlagen zu lassen. Ob Testergebnis, Benutzereingabe oder Systemzustand – mit if-Anweisungen trifft ein Bash-Skript zur Laufzeit die richtigen Entscheidungen.

Beim Bash-Scripting folgt eine if-Anweisung einer bestimmten Struktur. Sie beginnt in der Regel mit dem "ifSchlüsselwort "", gefolgt von der auszuwertenden Bedingung, dem ""dann Schlüsselwort sowie einen oder mehrere Befehle, die ausgeführt werden, wenn die Bedingung erfüllt ist.

Um mehr Flexibilität zu ermöglichen, kann die if-Anweisung auch ein optionales "elif" (else if)-Anweisung, die zum Einsatz kommt, wenn die ursprüngliche Bedingung falsch ist. Sie ermöglicht es, eine weitere Bedingung zu prüfen und entsprechend fortzufahren. Zusätzlich kann die if-Anweisung eine optionale "else"-Anweisung enthalten, die ausgeführt wird, wenn keine der Bedingungen zutrifft.

Durch die Kombination von if-Anweisungen mit anderen Bash-Befehlen und Shell-Scripting-Funktionen können Entwickler komplexe Skripte erstellen, die anspruchsvolle Aufgaben und Prozesse automatisieren. Lies weiter, um mehr über die Bash-if-Anweisung zu erfahren: Syntax, Anwendungsfälle und Beispiele!

Syntax der Bash-if-Anweisung

Die Bash-Syntax bezeichnet die Regeln, die Struktur und Grammatik von Befehlen und Skripten in der Bash-Shell festlegen. Sie umfasst verschiedene Konstrukte und Elemente, darunter:

  • Befehle: Das sind einzelne ausführbare Programme oder eingebaute Shell-Befehle, mit denen bestimmte Aufgaben erledigt werden. Den größten Teil der Zeit, die du mit Bash-Programmierung verbringst, wirst du mit diesen Zeilen arbeiten.
  • Argumente: Das sind Werte, die an Befehle übergeben werden, um Optionen, Parameter oder Eingabedaten anzugeben. Stell sie dir als Bedingungen vor, die für einen Befehl gesetzt werden, um dessen Ausführungsparameter festzulegen.
  • Variablen: Das sind Bezeichner, die Werte repräsentieren, die zugewiesen, verändert oder in Ausdrücken verwendet werden können. Sie werden häufig eingesetzt, um die Werte zu bestimmen, mit denen sowohl Befehle als auch Argumente arbeiten.
  • Umleitung: Das ist der Vorgang, bei dem Eingabe, Ausgabe oder Fehler zu Dateien, Geräten oder anderen Befehlen weitergeleitet werden. Ohne diese Funktion landen Befehle leicht am falschen Ziel und bringen deinen Code durcheinander.
  • Rohre: Das ist ein Mechanismus, der die Ausgabe eines Befehls mit der Eingabe eines anderen verbindet. Pipes werden vor allem für komplexe bedingte Befehlsketten in größeren Programmen verwendet und ermöglichen es, Befehle miteinander zu verknüpfen.
  • Kontrollstrukturen: Das sind Konstrukte, die den Ausführungsfluss von Befehlen steuern, etwa Schleifen, Bedingungen und Funktionen. Ein gutes Verständnis von Kontrollstrukturen ist entscheidend für die Entwicklung ausgefeilter Befehlsketten und verleiht deinem Code eine zusätzliche Tiefe.
  • Kommentare: Das sind Anmerkungen, die von der Shell ignoriert werden und dazu dienen, Code zu dokumentieren oder Erklärungen bereitzustellen. Sie sind wichtige Orientierungspunkte bei der Analyse und beim Debugging, besonders in Teamprojekten.

Bash-Syntax muss korrekt geschrieben sein, damit die Shell Befehle interpretieren und ausführen kann. Syntaxfehler können dazu führen, dass die Shell Fehlermeldungen ausgibt oder sich unerwartet verhält.

Hier ist die Bash-if-Anweisung in der Praxis:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

In diesem Beispiel bezeichnet "condition" einen Test, der entweder wahr oder falsch ergibt. Ist die Bedingung wahr, werden die Befehle ausgeführt, die nach dem Schlüsselwort "then" angegeben sind. Möchte man stattdessen eine weitere Bedingung prüfen, verwendet man das Schlüsselwort "elif". Es bietet die Möglichkeit, eine alternative Bedingung zu berücksichtigen. Trifft keine der Bedingungen zu, kommen die Befehle nach dem Schlüsselwort "else" zum Einsatz. Das ist sozusagen der Fallback. Abgeschlossen wird die if-Anweisung schließlich mit dem Schlüsselwort "fi".

Wie funktionieren Bash-Anweisungen?

Im Bash-Scripting ist die if-Anweisung ein zentrales Werkzeug, um den Ablauf eines Skripts anhand des Ergebnisses einer Bedingungsprüfung zu steuern. Ihr Zweck: eine Bedingung auswerten und, wenn sie zutrifft, eine bestimmte Folge von Befehlen ausführen.

Schauen wir uns an, wie eine if-Anweisung in einem Bash-Skript typischerweise abläuft. Das Skript wertet die Bedingung in der if-Anweisung aus. Ist die Bedingung wahr, werden die Befehle im "then"-Block ausgeführt.

Ist die Bedingung falsch, wertet das Skript weitere elif-Bedingungen aus. Trifft eine davon zu, werden die Befehle des entsprechenden elif-Blocks ausgeführt. Sind weder die if- noch die elif-Bedingungen wahr, führt das Skript die Befehle im else-Block aus - sofern ein solcher vorhanden ist.

Die if-Anweisung ist das zentrale Werkzeug für Entscheidungslogik in einem Skript. Sie steuert, welcher Ausführungspfad eingeschlagen wird, abhängig vom Ergebnis eines Tests. Dieser Test kann verschiedene Faktoren berücksichtigen, etwa das Ergebnis eines Befehls oder den Wert einer Variablen.

Bash If-Anweisung in der Praxis

Genug Theorie - sehen wir uns an, wie eine Bash if-Anweisung in der aktiven Entwicklung eingesetzt wird. Hier ein Beispiel, das ihre Funktionsweise zeigt:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

In diesem Beispiel wertet die if-Anweisung den Wert der Variablen x aus. Ist x größer als 4, gibt das Skript "x is greater than 4" aus. Ist x kleiner oder gleich 4, gibt es stattdessen "x is less than or equal to 4" aus.

Jetzt, wo du die grundlegende Bash If-Anweisung und ihre Funktionsweise kennst, gehen wir tiefer in die Varianten und zugehörigen Befehle ein: Basic If Statements, Nested If Statements, Bash If Else, If Elif Else und Case Statements - eines nach dem anderen.

Einfache If-Anweisungen

Fangen wir mit der einfachen Bash if-Anweisung an. Sie prüft, ob eine Bedingung wahr ist, und führt entsprechend einen Block von Befehlen aus. Die Syntax lautet:

if [ condition ]
then
  commands
fi

In diesem Fall wertet das Skript die Bedingung aus. Ist sie wahr, werden die angegebenen Befehle ausgeführt. Ist sie falsch, überspringt das Skript den "then"-Block und fährt mit dem nächsten Befehl fort.

Verschachtelte If-Anweisungen

Eine Nested If-Anweisung ist - wie der Name schon sagt - eine if-Anweisung, die in einer anderen if-Anweisung steckt. Diese verschachtelte Struktur ermöglicht komplexere Tests und Auswertungen innerhalb eines Skripts. Hier ein Beispiel:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Wie du an den Befehlen siehst, wertet das Skript zunächst condition1 aus. Ist condition1 wahr, wird anschließend condition2 ausgewertet. Ist auch condition2 wahr, führt das Skript die entsprechenden Befehle aus.

Bash If-Else-Anweisungen

Die Bash if else-Anweisung ermöglicht Entscheidungen im Skript basierend darauf, ob eine Bedingung wahr oder falsch ist. Das erlaubt eine differenziertere Steuerung des Programmflusses. Die Struktur sieht so aus:

if [ condition ]
then
  commands1
else
  commands2
fi

Ist die Bedingung wahr, führt das Skript "commands1" aus. Ist sie falsch, wechselt es zu "commands2".

If-Elif-Else-Anweisungen

Manchmal müssen mehrere Bedingungen und ihre jeweiligen Ergebnisse berücksichtigt werden. Genau dafür ist die if elif else-Anweisung gedacht. Hier die Syntax:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

Das Skript wertet zuerst condition1 aus. Ist sie wahr, werden commands1 ausgeführt. Ist condition1 falsch, wird condition2 geprüft. Ist condition2 wahr, werden commands2 ausgeführt. Sind sowohl condition1 als auch condition2 falsch, führt das Skript als Fallback commands3 aus.

Fallanweisungen

In Bash gibt es die case-Anweisung, die ähnlich wie ein switch-Statement in anderen Programmiersprachen funktioniert. Sie führt je nach Wert einer Variablen unterschiedliche Befehlsblöcke aus. Hier die Struktur:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

Das Skript wertet die Variable expression aus und vergleicht sie mit verschiedenen Mustern. Bei einer Übereinstimmung wird der zugehörige Befehlsblock ausgeführt. Gibt es keine Übereinstimmung, werden die Standard-Befehle ausgeführt. Das Sternchen (*) dient dabei als Platzhalter für alles, was durch keine andere Regel abgedeckt wird.

Logische Operatoren in Bash

Ein weiterer zentraler Bestandteil der Bash if-Anweisung sind logische Operatoren. Sie ermöglichen es, mehrere Bedingungen zu kombinieren und Entscheidungen auf Basis des kombinierten Wahrheitswerts zu treffen. Bash stellt drei grundlegende logische Operatoren für if-Anweisungen bereit. Hier sind Beispiele für alle drei.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • Logisches ODER (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Ungleich:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Fazit

In diesem Blogbeitrag haben wir eine Einführung in Bash-if-Anweisungen gegeben und gezeigt, wie man sie einsetzt. Außerdem haben wir besprochen, wie sie deinen Code übersichtlicher und funktionaler machen können. Wer bedingte Anweisungen gezielt nutzt, kann damit leistungsfähige Skripte schreiben, die komplexe Aufgaben und Entscheidungslogik abbilden.

Bist du neu in der Welt von Linux? Wir begleiten dich auf diesem Weg! Unser Linux VPS ist der ideale Einstieg für Anfänger: einfach zu bedienen, ohne auf Leistung zu verzichten. Mit intuitiven Oberflächen und kompetenter Unterstützung gelingt der Einstieg in einen Linux-Server schneller als gedacht. Ob du eine Website einrichtest, Anwendungen testest oder die Möglichkeiten von Linux erkundest - unser Linux VPS bietet eine sichere und unkomplizierte Umgebung. Starte selbstbewusst in die Linux-Welt - sieh dir noch heute unsere Linux VPS-Optionen an!

Linux VPS Hosting

Hol dir einen Economy- oder Premium-Linux VPS zum günstigen Preis - ideal für Websites oder Remote-Desktop. VPS läuft auf Linux KVM für höhere Effizienz und setzt auf leistungsstarke Hardware mit NVMe SSD-Speicher für mehr Geschwindigkeit.

Weiterlesen

Häufig gestellte Fragen

Kann ich logische Operatoren in Bash-if-Anweisungen verwenden?

Ja, du kannst logische Operatoren wie '&' und '||' in Bash-if-Anweisungen verwenden. Zum Beispiel führt if [ $var -gt 0 ] && [ $var -lt 10 ]; then … den Codeblock aus, wenn $var größer als 0 und kleiner als 10 ist.

Kann ich mehrere Bedingungen in einer einzigen if-Anweisung kombinieren?

Ja, du kannst in einer einzigen if-Anweisung mehrere Bedingungen kombinieren, indem du logische Operatoren wie -a (AND) oder -o (OR) verwendest. Zum Beispiel prüft if [ $var -gt 0 -a $var -lt 10 ]; then … den Codeblock aus, wenn $var ob $var größer als 0 UND kleiner als 10 ist.

Kann ich Befehlssubstitution in Bash-if-Anweisungen verwenden?

Ja, du kannst in Bash-if-Anweisungen Command Substitution verwenden, indem du den Befehl in $() oder Backticks („). Zum Beispiel, if [ $(whoami) == "root" ]; then … führt den Codeblock aus, wenn der aktuelle Benutzer root ist.

[[ vs [ vs ( vs ((): Was ist der Unterschied zwischen diesen Bash-Operatoren?

Kurz gesagt: `[[` wird für erweiterte Bedingungsprüfungen verwendet. `[` für einfache Bedingungsprüfungen. `(` für die Gruppierung von Befehlen in einer Subshell. `((` für arithmetische Operationen.

 

Teilen

Weitere Blog-Beiträge

Weiterlesen.

Beste selbst gehostete Apps, die du mit Cosmos Cloud betreiben kannst – Titelbild mit App-Panels rund um ein Cosmos-Dashboard.
Server & Betriebssysteme

Die besten selbst gehosteten Apps für Cosmos Cloud: Dateien, Medien, Passwörter, Automatisierung und mehr!

Maybe du hast Cosmos Cloud eingerichtet und möchtest wissen, welche Apps gut dazu passen - oder du hast dich noch gar nicht für Cosmos entschieden und willst nur sehen, wie gut es in deinen Workflow passt

Nick SilberNick Silber 16 Min. Lesezeit
Portainer vs Cosmos Cloud für die Verwaltung von Docker-Apps – Titelbild mit Hybrid-Setup-Diagramm und farbigen Blöcken für Ops und Zugriff.
Server & Betriebssysteme

Portainer vs Cosmos Cloud: Die bessere Wahl für Docker App-Management

Wenn du Docker bereits kennst und einfach den saubereren Weg suchst, einen wachsenden App-Stack zu betreiben, hier die kurze Antwort auf Portainer vs Cosmos Cloud: Portainer ist die stärkere Wahl für direkt

Nick SilberNick Silber 14 Min. Lesezeit
Cosmos Cloud vs CasaOS vs Umbrel – Feature-Grafik mit drei Self-Hosting-Wegen innerhalb eines abstrakten Cloud-Netzwerks.
Server & Betriebssysteme

Cosmos Cloud vs CasaOS vs Umbrel: Welche Self-Hosted-Plattform passt zu deinem Setup?

Die kurze Antwort: CasaOS ist nach wie vor der einfachste Einstieg, Umbrel bietet die übersichtlichste kuratierte Oberfläche, und Cosmos Cloud macht mehr Sinn, sobald du mehr Kontrolle über Domain

Nick SilberNick Silber 11 Min. Lesezeit

Bereit zum Deployen? Ab 2,48 $/Monat.

Unabhängige Cloud seit 2008. AMD EPYC, NVMe, 40 Gbps. 14 Tage Geld-zurück-Garantie.