Shellskript Programmierung - Teil 6 (Kommandosubstitution) Eines der
mächtigsten Feature
der
bash
ist die
Kommandosubstitution. Im
sechsten Teil dieser
Kurzeinführungen
soll es um genau
dieses Thema gehen. Autor/Author: Dipl.-Inform. (FH) Steffen Wendzel (Date/Datum: 080302-19:32, Hits: 2060)
Im Normalfall führt man Kommandos aus und kann anschließend deren Ergebnisse betrachten oder leitet deren
Ausgabe vielleicht durch eine Pipe an ein anderes Programm weiter.
Bei der Kommandosubstitution ist das anders. Bei dieser wird ein Unterkommando in Backticks (`-Zeichen) gesetzt.
Dies bewirkt, dass die Ausgabe des Kommandos als Parameter für ein anderes Kommando benutzt wird.
Ein einfaches Beispiel
Dieses Beispiel ist etwas unsinnig, für den Einstieg wird es allerdings gute Dienste leisten. Und zwar soll
die Ausgabe des ls-Programms benutzt werden, um Dateinamen aufzulisten. Die Auflistung der
Dateinamen soll aber das echo-Programm übernehmen, das die Ausgabe von ls als
Parameter geliefert bekommen soll.
Dies ist möglich, weil das echo-Programm das, was man ihm als Parameter angibt (einmal abgesehen
von einigen speziellen Parametern) auf der Standardausgabe ausgibt. Und da es nun die Ausgabe von ls (also
die Dateinamen) als Parameter geliefert bekommt, gibt es diese einfach aus.
Es ist hier zu beachten, dass das ls-Kommando in Backticks geschrieben steht:
$ echo `ls`
a b c d e f
Datum in echo-Ausgabe einbauen
Ein typischer Anwendungsfall für die Kommandosubstitution ist die Ausgabe des Datums innerhalb eines Texts
mit echo. Die Syntax ist hierbei gleich:
$ echo "Heute ist der `date`".
Heute ist der So 2. Mär 19:29:06 CET 2008
Ein netteres Beispiel
Richtig nützlich wird die Kommandosubstitution aber erst dann, wenn Variablen (vgl. Teil 4) mit ins Spiel kommen. Variablen können
nämlich die Ausgabe einer Kommandosubstitution als Werte annehmen.
So ist es etwa möglich, die Ausgabe von ls als Variablenwert zwischenzuspeichern. Um dies zu
verdeutlichen soll nun die Ausgabe von ls zunächst in einer Variablen zwischengespeichert und
dann durch echo ausgegeben werden.
$ DATEIEN=`ls`
$ echo $DATEIEN
a b c d e f
Mehr dazu findet man in Einstieg in Linux und in
Linux. ____________
|