Ce lien est pertinent Quelle est la différence entre substitution et pipe to bash mais je ne comprends pas tout ce qui se dit.
Quelle est la différence entre la tuyauterie command1 | command2
par rapport aux commandes d'expansion command2 $(command1)
? Par exemple
vi $(find /home | grep xyzzy)
crache les résultats à vi pour les éditer alors que
find /home | grep xyzzy | vi
ne semble pas fonctionner pour moi. Mais je ne comprends pas la différence fondamentale.
Modifier
Autres messages pertinents
Substitution de processus et tuyau
Substitution de processus et tuyau
Réponse acceptée :
A|B
exécute A et B (en parallèle), et la sortie standard de A est introduite dans l'entrée standard de B. Dans le cas de
A $(B)
le shell exécute d'abord B, collecte la sortie standard de B, puis exécute A, mais pour cette exécution affecte le mot individuel au vecteur ARGV de A (c'est-à-dire que A peut accéder à ces mots par le mécanisme argv habituel connu de C et d'autres langages ).
Mis à part le fait que dans les deux cas deux programmes A et B sont impliqués, je ne vois rien de similaire entre eux.