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.