Kommando-Trenner: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Kommando-Trenner = *Kommando-Trenner bestimmen, wie mehrere Befehle in einer Zeile ausgeführt werden.* *Sie steuern, ob ein nachfolgender Befehl immer, nur…“)
 
 
Zeile 1: Zeile 1:
 
= Kommando-Trenner =
 
= Kommando-Trenner =
  
*Kommando-Trenner bestimmen, wie mehrere Befehle in einer Zeile ausgeführt werden.*
+
* Kommando-Trenner bestimmen, wie mehrere Befehle in einer Zeile ausgeführt werden.
*Sie steuern, ob ein nachfolgender Befehl immer, nur bei Erfolg oder nur bei Fehler ausgeführt wird.*
+
* Sie steuern, ob ein nachfolgender Befehl immer, nur bei Erfolg oder nur bei Fehler ausgeführt wird.
*Damit lassen sich einfache logische Abläufe direkt in einer Befehlszeile formulieren.*
+
* Damit lassen sich einfache logische Abläufe direkt in einer Befehlszeile darstellen.
  
 
== Grundprinzip ==
 
== Grundprinzip ==
*Bash-Kommandos liefern nach ihrer Ausführung einen Rückgabewert (Exit-Status).*
+
* Bash-Kommandos liefern nach ihrer Ausführung einen Rückgabewert (Exit-Status).
*Dieser Exit-Status entscheidet, ob nachfolgende Befehle mit ''';''', '''&&''' oder '''||''' ausgeführt werden.*
+
* Dieser Exit-Status entscheidet, ob nachfolgende Befehle mit ';', '&&' oder '||' ausgeführt werden.
  
 
== Überblick ==
 
== Überblick ==
Zeile 15: Zeile 15:
 
| ; || Nacheinander || Immer, unabhängig vom Ergebnis
 
| ; || Nacheinander || Immer, unabhängig vom Ergebnis
 
|-
 
|-
| && || UND-Verknüpfung || Nur wenn das vorherige Kommando erfolgreich war (Exit-Code = 0)
+
| && || UND-Verknüpfung || Nur wenn das vorherige Kommando erfolgreich war
 
|-
 
|-
| \|\| || ODER-Verknüpfung || Nur wenn das vorherige Kommando fehlschlug (Exit-Code ≠ 0)
+
| || || ODER-Verknüpfung || Nur wenn das vorherige Kommando fehlschlug
 
|}
 
|}
  
 
== Beispiel – Semikolon (;) ==
 
== Beispiel – Semikolon (;) ==
*Das Semikolon trennt Kommandos unabhängig voneinander.*
+
* ls /etc ; echo "Liste fertig" ; pwd
*Jeder Befehl wird ausgeführt, egal ob der vorherige erfolgreich war oder nicht.*
 
* date ; hostname ; whoami 
 
  
 
  Ausgabe:
 
  Ausgabe:
   Fri Oct 17 19:14:27 CEST 2025 
+
   (Inhalt von /etc)
   orville 
+
   Liste fertig
   thomas
+
   /home/thomas
  
 
== Beispiel – UND-Verknüpfung (&&) ==
 
== Beispiel – UND-Verknüpfung (&&) ==
*Mit '''&&''' wird der zweite Befehl nur ausgeführt, wenn der erste erfolgreich war.*
+
* mkdir /tmp/test && echo "Verzeichnis wurde angelegt."
* mkdir /tmp/demo && echo "Verzeichnis wurde erstellt." 
 
 
 
Ausgabe:
 
  Verzeichnis wurde erstellt.
 
 
 
<syntaxhighlight lang="bash">
 
mkdir /tmp/demo && echo "ok"
 
ls /nichtda && echo "Dieser Text erscheint nicht"
 
</syntaxhighlight>
 
  
 
== Beispiel – ODER-Verknüpfung (||) ==
 
== Beispiel – ODER-Verknüpfung (||) ==
*Mit '''||''' wird der zweite Befehl nur ausgeführt, wenn der erste fehlschlägt.*
+
* cd /nichtda || echo "Verzeichnis existiert nicht."
* cd /nichtda || echo "Fehler: Verzeichnis existiert nicht."
 
 
 
Ausgabe:
 
  Fehler: Verzeichnis existiert nicht. 
 
 
 
<syntaxhighlight lang="bash">
 
ping -c1 192.0.2.1 > /dev/null 2>&1 || echo "Host nicht erreichbar"
 
</syntaxhighlight>
 
  
 
== Kombination von && und || ==
 
== Kombination von && und || ==
*Beide Operatoren lassen sich kombinieren, um kompakte Prüfungen zu schreiben.*
+
* [ -f /etc/passwd ] && echo "Datei existiert" || echo "Datei fehlt"
* [ -f /etc/passwd ] && echo "Datei existiert" || echo "Datei fehlt"
 
  
<syntaxhighlight lang="bash">
+
== Rückgabewert prüfen ==
[ -d /etc ] && echo "Verzeichnis vorhanden" || echo "nicht vorhanden"
+
* Der Exit-Status des letzten Kommandos kann mit 'echo $?' angezeigt werden.
</syntaxhighlight>
+
* ls /etc > /dev/null
 +
* echo $?
 +
0
  
== Rückgabewert prüfen ==
+
* ls /nichtda > /dev/null
*Nach jedem Befehl kann der Exit-Status mit '''echo $?''' ausgegeben werden.*
+
* echo $?
*Ein Wert von 0 bedeutet Erfolg, jeder andere Wert steht für einen Fehler.*
+
2
  
<syntaxhighlight lang="bash">
+
== Beispiel – kurze logische Kette ==
ls /etc > /dev/null
+
* ping -c1 10.0.0.1 > /dev/null 2>&1 && echo "Host erreichbar" || echo "Host nicht erreichbar"
echo $?
 
0
 
  
ls /nichtda > /dev/null
+
Ausgabe:
echo $?
+
  Host erreichbar
2
 
</syntaxhighlight>
 
  
 
== Hinweise ==
 
== Hinweise ==
* Verwenden Sie ''';''' für unabhängige Befehle.
+
* ';' – führt Kommandos unabhängig voneinander aus.
* Nutzen Sie '''&&''' für Befehle, die nur bei Erfolg folgen sollen.
+
* '&&' – führt das nächste Kommando nur bei Erfolg aus (Exit-Code = 0).
* Nutzen Sie '''||''' für Befehle, die nur bei Fehler folgen sollen.
+
* '||' – führt das nächste Kommando nur bei Fehler aus (Exit-Code ≠ 0).
* Kombinierte Ausdrücke mit '''&&''' und '''||''' ersetzen in vielen Fällen einfache if-Konstruktionen.
+
* Diese Operatoren können beliebig kombiniert werden.
* Der Rückgabewert (Exit-Code) ist entscheidend für das Verhalten der Trenner.
+
* Der Exit-Status ('$?') ist wichtig für automatisierte Abläufe und Skripte.
  
 
== Aufgaben ==
 
== Aufgaben ==
* Führen Sie drei Kommandos in einer Zeile mit ''';''' aus.
+
* Führen Sie drei Kommandos (date, whoami, pwd) in einer Zeile aus.
* Erstellen Sie eine Befehlskette mit '''&&''', die bei Erfolg eine Meldung ausgibt.
+
* Erstellen Sie eine Kommando-Kette, die ein Verzeichnis anlegt und bei Erfolg eine Meldung ausgibt.
* Erstellen Sie eine Befehlskette mit '''||''', die bei Fehler eine Meldung ausgibt.
+
* Erstellen Sie eine zweite Kette, die bei Fehlschlag eine Fehlermeldung ausgibt.
* Kombinieren Sie '''*
+
* Prüfen Sie nach jedem Befehl den Exit-Status mit 'echo $?'.
 +
* Kombinieren Sie '&&' und '||' zu einem Ausdruck, der je nach Ergebnis "OK" oder "Fehler" ausgibt.

Aktuelle Version vom 17. Oktober 2025, 15:54 Uhr

Kommando-Trenner

  • Kommando-Trenner bestimmen, wie mehrere Befehle in einer Zeile ausgeführt werden.
  • Sie steuern, ob ein nachfolgender Befehl immer, nur bei Erfolg oder nur bei Fehler ausgeführt wird.
  • Damit lassen sich einfache logische Abläufe direkt in einer Befehlszeile darstellen.

Grundprinzip

  • Bash-Kommandos liefern nach ihrer Ausführung einen Rückgabewert (Exit-Status).
  • Dieser Exit-Status entscheidet, ob nachfolgende Befehle mit ';', '&&' oder '||' ausgeführt werden.

Überblick

Trenner Bedeutung Ausführungsbedingung
; Nacheinander Immer, unabhängig vom Ergebnis
&& UND-Verknüpfung Nur wenn das vorherige Kommando erfolgreich war
ODER-Verknüpfung Nur wenn das vorherige Kommando fehlschlug

Beispiel – Semikolon (;)

  • ls /etc ; echo "Liste fertig" ; pwd
Ausgabe:
 (Inhalt von /etc)
 Liste fertig
 /home/thomas

Beispiel – UND-Verknüpfung (&&)

  • mkdir /tmp/test && echo "Verzeichnis wurde angelegt."

Beispiel – ODER-Verknüpfung (||)

  • cd /nichtda || echo "Verzeichnis existiert nicht."

Kombination von && und ||

  • [ -f /etc/passwd ] && echo "Datei existiert" || echo "Datei fehlt"

Rückgabewert prüfen

  • Der Exit-Status des letzten Kommandos kann mit 'echo $?' angezeigt werden.
  • ls /etc > /dev/null
  • echo $?
0
  • ls /nichtda > /dev/null
  • echo $?
2

Beispiel – kurze logische Kette

  • ping -c1 10.0.0.1 > /dev/null 2>&1 && echo "Host erreichbar" || echo "Host nicht erreichbar"
Ausgabe:
 Host erreichbar

Hinweise

  • ';' – führt Kommandos unabhängig voneinander aus.
  • '&&' – führt das nächste Kommando nur bei Erfolg aus (Exit-Code = 0).
  • '||' – führt das nächste Kommando nur bei Fehler aus (Exit-Code ≠ 0).
  • Diese Operatoren können beliebig kombiniert werden.
  • Der Exit-Status ('$?') ist wichtig für automatisierte Abläufe und Skripte.

Aufgaben

  • Führen Sie drei Kommandos (date, whoami, pwd) in einer Zeile aus.
  • Erstellen Sie eine Kommando-Kette, die ein Verzeichnis anlegt und bei Erfolg eine Meldung ausgibt.
  • Erstellen Sie eine zweite Kette, die bei Fehlschlag eine Fehlermeldung ausgibt.
  • Prüfen Sie nach jedem Befehl den Exit-Status mit 'echo $?'.
  • Kombinieren Sie '&&' und '||' zu einem Ausdruck, der je nach Ergebnis "OK" oder "Fehler" ausgibt.