Die Shell kennt noch eine sehr besondere Form der Klammerung, die häufig mißverstanden wird. Es handelt sich um die sogenannte Kommandosubstitution. Dabei geht es darum, die Ausgabe eines Programmes, die normalerweise auf die Standard-Ausgabe geleitet würde als Kommandozeilenparameter eines anderen Programmes zu benutzen.

Die dafür notwendige Klammerung besteht aus den `…` Zeichen (grave), nicht zu verwechseln mit den einfachen Hochkommas (‚). Wenn die Shell auf einen Befehl in diesen `-Zeichen stößt, wird eine Subshell geöffnet, der Befehl ausgeführt und anstelle des `…` Konstrukts die Ausgabe des Befehls gesetzt. Falls das `-Zeichen auf der Tastatur fehlt kann als Ersatz auch die Konstruktion $(Befehl) benutzt werden.

Beispiel

Der pwd Befehl gibt den Namen des aktuellen Arbeitsverzeichnisses auf die Standard-Ausgabe aus. Wenn wir nun eine Textzeile ausgeben wollen, in der das aktuelle Arbeitsverzeichnis genannt werden soll, so können wir schreiben:

echo Wir befinden uns gerade im Verzeichnis `pwd`

Die Shell erkennt also das Konstrukt `pwd`, startet eine Subshell und führt den Befehl pwd aus. Der Befehl pwd schreibt jetzt z.B. /home/hans auf die Standard-Ausgabe. Die Subshell leitet diese Angabe aber um und gibt sie der aufrufenden Shell zurück. Die aufrufende Shell ersetzt jetzt das `pwd` Konstrukt durch eben die Ausgabe des pwd Kommandos und ersetzt die Zeile in

echo Wir befinden uns gerade im Verzeichnis /home/hans

Erst jetzt wird der echo-Befehl ausgeführt und gibt den Satz auf dem Bildschirm aus.

Schreibe einen Kommentar