Kommando-Gruppierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Kommando-Gruppierung

  • Mit Kommando-Gruppierung können mehrere Befehle in einer Sub-Shell oder in einem Block zusammengefasst werden.
  • Dies erlaubt es, alle enthaltenen Befehle gemeinsam auszuführen, z. B. mit logischer Verknüpfung oder zur Steuerung von Variablenumfang.

Grundprinzip

  • Befehle werden innerhalb von runden Klammern '()' oder geschweiften Klammern '{}' gruppiert.
  • Runde Klammern starten eine Sub-Shell, geschweifte Klammern verwenden die aktuelle Shell.
  • Der Exit-Status der gesamten Gruppe wird durch das letzte ausgeführte Kommando bestimmt.

Runde Klammern (Sub-Shell)

  • ( Kommando1 ; Kommando2 ; Kommando3 )
  • Variablenänderungen innerhalb der Klammern betreffen nur die Sub-Shell.
Beispiel
  • ( cd /tmp ; mkdir demo ; echo "In Sub-Shell erstellt" )
  • pwd
Ausgabe:
 /home/thomas
 (Sub-Shell-Befehle beeinflussen aktuelle Shell nicht)

Geschweifte Klammern (aktuelle Shell)

  • { Kommando1 ; Kommando2 ; Kommando3 ; }
  • Die Befehle werden in der aktuellen Shell ausgeführt, Variablenänderungen bleiben erhalten.
  • Wichtig: Nach dem letzten Befehl muss ein Semikolon oder ein Newline stehen.
Beispiel
  • { VAR=1 ; echo "VAR in Block: $VAR" ; }
  • echo "VAR nach Block: $VAR"
Ausgabe:
 VAR in Block: 1
 VAR nach Block: 1

Anwendung

  • Gruppierung ermöglicht:
    • Gemeinsame logische Verknüpfung mehrerer Befehle
    • Steuerung der Sichtbarkeit von Variablen
    • Strukturierung von Skripten für Übersichtlichkeit

Hinweise

  • Runde Klammern starten immer eine Sub-Shell.
  • Geschweifte Klammern arbeiten innerhalb der aktuellen Shell.
  • Gruppierte Befehle können mit '&&' oder '||' kombiniert werden.
  • Denk daran, dass bei geschweiften Klammern ein Leerzeichen nach '{' und vor '}' erforderlich ist.

Aufgaben

  • Fasse drei Befehle in einer Sub-Shell zusammen und überprüfe anschließend den aktuellen Pfad.
  • Fasse drei Befehle in einem Block mit geschweiften Klammern zusammen und setze eine Variable. Prüfe danach ihren Wert.
  • Kombiniere eine Gruppe von Befehlen mit '&&' und prüfe den Exit-Status.
  • Erstelle eine Sub-Shell, in der ein Verzeichnis angelegt und danach gelöscht wird, ohne dass es die aktuelle Shell beeinflusst.