Wie wir bereits an anderer Stelle gesehen haben, bearbeitet die Shell
eine gegebene Kommandozeile in vielfacher Weise. Zu den
Bearbeitungsschritten zählen diverse Substitutionen, wie
beispielsweise die Ersetzung von Wildcards durch entsprechende
Datei- oder Verzeichnisnamen, die Ersetzung von Aliasen durch ihren Wert oder
auch die Ersetzung von Variablen, die wir später noch betrachten
werden. Mit Kommandosubstitution bezeichnet man einen Mechanismus, der
zur Ersetzung eines Kommandos durch dessen Standardausgabe führt. Das
zu ersetzende Kommando wird also aus der Kommandozeile
entfernt. Danach wird an seiner Stelle die Standardausgabe des
entfernten Kommandos eingefügt. Hier ein Beispiel:
user@linux ~$
echo Im Verzeichnis existieren `ls | wc -w` Einträge
Im Verzeichnis existieren 22 Einträge
|
Das Kommando echo gibt einfach auf die Standardausgabe aus, was es als
Argumente erhält. Wie zu sehen, ist die Pipeline
ls | wc -w in den
Text eingefügt, umgeben von sogenannten Backticks oder (umständlicher)
linksgeneigten Hochkommata. Die Backticks bewirken, dass vor dem
Aufruf von echo das eingeschlossene Kommando ausgeführt und seine
Ausgabe an Stelle des Kommandos eingefügt wird. Hier der Beweis:
user@linux ~$
ls | wc -w
22
|
In der bash können Sie noch eine zweite Schreibweise verwenden:
user@linux ~$
echo Im Verzeichnis existieren $(ls | wc -w) Einträge
Im Verzeichnis existieren 22 Einträge
|
Das Kommando ist in runde Klammern eingefaßt, denen ein Dollarzeichen
voransteht. Das Ergebnis ist dasselbe.
|