Einfache Verzweigungen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
= Kurzlogische Verzweigungen (&& und ||) = | = Kurzlogische Verzweigungen (&& und ||) = | ||
| − | *Kurzlogische Verzweigungen nutzen den Rückgabewert (Exit-Status) eines Befehls, um Folgeaktionen in einer Zeile auszuführen. | + | *Kurzlogische Verzweigungen nutzen den Rückgabewert (Exit-Status) eines Befehls, um Folgeaktionen in einer Zeile auszuführen. |
| − | *Dadurch können einfache Prüfungen kompakt formuliert werden, ohne die if-Struktur zu verwenden. | + | *Dadurch können einfache Prüfungen kompakt formuliert werden, ohne die if-Struktur zu verwenden. |
== Grundprinzip == | == Grundprinzip == | ||
| − | * '''&&''' (UND): führt den nächsten Befehl **nur** aus, wenn der vorherige erfolgreich war (Exit-Status 0). | + | * '''&&''' (UND): führt den nächsten Befehl **nur** aus, wenn der vorherige erfolgreich war (Exit-Status 0). |
| − | * '''||''' (ODER): führt den nächsten Befehl **nur** aus, wenn der vorherige **nicht** erfolgreich war (Exit-Status ≠ 0). | + | * '''||''' (ODER): führt den nächsten Befehl **nur** aus, wenn der vorherige **nicht** erfolgreich war (Exit-Status ≠ 0). |
== Beispiele == | == Beispiele == | ||
| − | * [ -f /etc/passwd ] && echo "Datei existiert" | + | * [ -f /etc/passwd ] && echo "Datei existiert" |
| − | Datei existiert | + | Datei existiert |
| − | * [ -d /root ] || echo "Verzeichnis /root existiert nicht" | + | * [ -d /root ] || echo "Verzeichnis /root existiert nicht" |
| − | Verzeichnis /root existiert nicht | + | Verzeichnis /root existiert nicht |
| − | * [ "$USER" = "root" ] && echo "Administrator" || echo "Normaler Benutzer" | + | * [ "$USER" = "root" ] && echo "Administrator" || echo "Normaler Benutzer" |
| − | Normaler Benutzer | + | Normaler Benutzer |
== Überprüfung des Rückgabewerts == | == Überprüfung des Rückgabewerts == | ||
| − | *Der Rückgabewert des letzten Kommandos kann mit '''echo $?''' ausgegeben werden. | + | *Der Rückgabewert des letzten Kommandos kann mit '''echo $?''' ausgegeben werden. |
| − | 0 = wahr / erfolgreich | + | 0 = wahr / erfolgreich |
| − | ≠0 = falsch / Fehler | + | ≠0 = falsch / Fehler |
== Hinweise == | == Hinweise == | ||
| − | * Eignet sich für **Einzeiler** und kurze logische Prüfungen. | + | * Eignet sich für **Einzeiler** und kurze logische Prüfungen. |
| − | * Die Auswertung basiert ausschließlich auf dem **Exit-Status**. | + | * Die Auswertung basiert ausschließlich auf dem **Exit-Status**. |
* Für komplexere Abläufe sollte die klassische if-Struktur verwendet werden. | * Für komplexere Abläufe sollte die klassische if-Struktur verwendet werden. | ||
== Aufgaben == | == Aufgaben == | ||
| − | *Überprüfen Sie mit einem Einzeiler, ob die Datei '''/etc/passwd''' existiert, und geben Sie eine Meldung aus. | + | *Überprüfen Sie mit einem Einzeiler, ob die Datei '''/etc/passwd''' existiert, und geben Sie eine Meldung aus. |
| − | *Prüfen Sie, ob eine Variable '''NAME''' leer ist oder nicht, und geben Sie „leer“ oder „nicht leer“ aus. | + | *Prüfen Sie, ob eine Variable '''NAME''' leer ist oder nicht, und geben Sie „leer“ oder „nicht leer“ aus. |
| − | *Bauen Sie einen Einzeiler, der „Root-Benutzer“ oder „Normaler Benutzer“ anzeigt, abhängig vom aktuellen Login-Namen. | + | *Bauen Sie einen Einzeiler, der „Root-Benutzer“ oder „Normaler Benutzer“ anzeigt, abhängig vom aktuellen Login-Namen. |
| − | *Geben Sie nach jeder Prüfung den Exit-Status mit '''echo $?''' aus. | + | *Geben Sie nach jeder Prüfung den Exit-Status mit '''echo $?''' aus. |
Version vom 24. November 2025, 17:40 Uhr
Kurzlogische Verzweigungen (&& und ||)
- Kurzlogische Verzweigungen nutzen den Rückgabewert (Exit-Status) eines Befehls, um Folgeaktionen in einer Zeile auszuführen.
- Dadurch können einfache Prüfungen kompakt formuliert werden, ohne die if-Struktur zu verwenden.
Grundprinzip
- && (UND): führt den nächsten Befehl **nur** aus, wenn der vorherige erfolgreich war (Exit-Status 0).
- || (ODER): führt den nächsten Befehl **nur** aus, wenn der vorherige **nicht** erfolgreich war (Exit-Status ≠ 0).
Beispiele
- [ -f /etc/passwd ] && echo "Datei existiert"
Datei existiert
- [ -d /root ] || echo "Verzeichnis /root existiert nicht"
Verzeichnis /root existiert nicht
- [ "$USER" = "root" ] && echo "Administrator" || echo "Normaler Benutzer"
Normaler Benutzer
Überprüfung des Rückgabewerts
- Der Rückgabewert des letzten Kommandos kann mit echo $? ausgegeben werden.
0 = wahr / erfolgreich ≠0 = falsch / Fehler
Hinweise
- Eignet sich für **Einzeiler** und kurze logische Prüfungen.
- Die Auswertung basiert ausschließlich auf dem **Exit-Status**.
- Für komplexere Abläufe sollte die klassische if-Struktur verwendet werden.
Aufgaben
- Überprüfen Sie mit einem Einzeiler, ob die Datei /etc/passwd existiert, und geben Sie eine Meldung aus.
- Prüfen Sie, ob eine Variable NAME leer ist oder nicht, und geben Sie „leer“ oder „nicht leer“ aus.
- Bauen Sie einen Einzeiler, der „Root-Benutzer“ oder „Normaler Benutzer“ anzeigt, abhängig vom aktuellen Login-Namen.
- Geben Sie nach jeder Prüfung den Exit-Status mit echo $? aus.