Dieser Link ist relevant. Was ist der Unterschied zwischen Substitution und Piping to Bash, aber ich verstehe nicht ganz alles, was gesagt wird.
Was ist der Unterschied zwischen der Weiterleitung von command1 | command2
im Vergleich zu expandierenden Befehlen command2 $(command1)
? Zum Beispiel
vi $(find /home | grep xyzzy)
spuckt Ergebnisse an vi aus, um sie zu bearbeiten, während
find /home | grep xyzzy | vi
scheint bei mir nicht zu funktionieren. Aber ich verstehe den grundlegenden Unterschied nicht.
Bearbeiten
Andere relevante Beiträge
Prozesssubstitution und Pipe
Prozesssubstitution und Pipe
Akzeptierte Antwort:
A|B
führt A und B (parallel) aus, und die Standardausgabe von A wird in die Standardeingabe von B eingespeist. Im Fall von
A $(B)
die Shell führt zuerst B aus, sammelt die Standardausgabe von B, führt dann A aus, weist aber für diese Ausführung die einzelnen Wörter dem ARGV-Vektor von A zu (d. h. A kann auf diese Wörter durch den üblichen argv-Mechanismus zugreifen, der von C und anderen Sprachen bekannt ist ).
Abgesehen davon, dass es sich in beiden Fällen um zwei Programme A und B handelt, sehe ich keine Ähnlichkeit zwischen ihnen.