Durch die Standard-Ausgabe eines Kommandos können Sie auf zwei Arten einen Teil eines Wortes oder ein ganzes Wort ersetzen. Bei der ersten (neuen) Art wird das Kommando in Dollarzeichen, runde Klammer auf, runde Klammer zu $(...) eingeschlossen. Bei der zweiten (archaischen) Art wird das Kommando in Gegenhochkommata ` ...` eingeschlossen. Hier wird die Zeichenkette zwischen den Hochkommata auf Entwertungen oder Anführungszeichen untersucht, bevor das Kommando ausgeführt wird (siehe Abschnitt „Entwerten von Metazeichen (quoting)“). Bei beiden Arten werden Neue-Zeile-Zeichen der Kommandoausgabe gelöscht.
Die Ersetzung $(cat datei) kann durch die äquivalente, aber schnellere Version $( < datei) durchgeführt werden. Die Ersetzung wird von eingebauten Shell-Kommandos, die keine Umlenkung der Ein- oder Ausgabe durchführen, ohne die Erzeugung eines neuen Prozesses durchgeführt.
Beispiel
Wenn Sie in einem Verzeichnis alle Dateien mit der Endung .c, in denen die Zeichenkette include enthalten ist, editieren wollen, dann hilft Ihnen folgendes:
for name in $( grep -l include *.c ) do edt $name done
grep -l include *.c durchsucht alle Dateien *.c nach der Zeichenkette include. Mit der Option -l veranlassen Sie, dass alle Dateien ausgegeben werden, in denen der Suchstring gefunden wurde.
Ein arithmetischer Ausdruck, in Dollarzeichen, doppelte runde Klammer auf und doppelte runde Klammer zu $((...)) eingeschlossen, wird durch den Wert des arithmetischen Ausdrucks ersetzt.
Beispiel
Sie wollen den vorletzten Parameter einer Shell-Prozedur ausgeben:
eval print \$$(( $#-1 ))