Bash 如何将两个命令作为参数传递?

Bash 如何将两个命令作为参数传递?,bash,diff,pipe,Bash,Diff,Pipe,是否可以将两个命令作为参数/参数传递到命令行程序 我使用程序combinediff将差异合并在一起,如: combinediff patchfile1 patchfile2 这很好,但我希望首先避免将差异保存到文件中。通过一根管道可以很好地工作(例如,在mercurial之外),但使用两根管道不起作用。这样的事情可能吗 combinediff | hg diff 1234 | hg diff 1337 到目前为止,它确实可以使用一个管道,但第二个管道被忽略。Bash具有进程替换 combin

是否可以将两个命令作为参数/参数传递到命令行程序

我使用程序combinediff将差异合并在一起,如:

combinediff patchfile1 patchfile2
这很好,但我希望首先避免将差异保存到文件中。通过一根管道可以很好地工作(例如,在mercurial之外),但使用两根管道不起作用。这样的事情可能吗

combinediff | hg diff 1234 | hg diff 1337

到目前为止,它确实可以使用一个管道,但第二个管道被忽略。

Bash具有进程替换

combinediff <(hg diff 1234) <(hg diff 1337)

(前提是
combinediff
-
理解为标准输入。如果您有
/dev/fd/0
,那么您可以像使用常规文件一样使用它,但同样,它也不能移植回jurassic Unix。在最坏的情况下,使用两个临时文件。)

对于这个问题,您已经得到了-1,这表明,在问这样的问题之前,你本可以好好搜索一下。。对stackoverflow本身进行良好的搜索会很方便。您对管道的概念似乎包含了相当多的魔力
a | b
实际上只不过是
a>文件;B工作得很好。非常感谢。
tmp=$(mktemp -t combine.XXXXXXX) || fail loudly
trap 'rm $tmp' EXIT
trap 'exit 127' TERM INT
hg diff 1234 >$tmp
hg diff 1337 | combinediff $tmp -