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