Kommando-Gruppierung
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.