Questo collegamento è rilevante Qual è la differenza tra sostituzione e piping per bash ma non capisco tutto ciò che viene detto.
Qual è la differenza tra il piping command1 | command2
rispetto ai comandi di espansione command2 $(command1)
? Ad esempio
vi $(find /home | grep xyzzy)
sputa i risultati a vi per modificarli mentre
find /home | grep xyzzy | vi
non sembra funzionare per me. Ma non capisco la differenza fondamentale.
Modifica
Altri post rilevanti
Sostituzione processo e pipe
Sostituzione processo e pipe
Risposta accettata:
A|B
esegue A e B (in parallelo) e lo standard output di A viene inserito nello standard input di B. Nel caso di
A $(B)
la shell esegue prima B, raccoglie lo standard output di B, quindi esegue A, ma per questa esecuzione assegna le singole parole al vettore ARGV di A (cioè A può accedere a queste parole con il solito meccanismo argv noto da C e da altri linguaggi ).
A parte il fatto che in entrambi i casi sono coinvolti due programmi A e B, non vedo nulla di simile tra loro.