我想比较两个命令的输出。
例如:
$ command1 arguments1 > tempfile1
$ command2 arguments2 > tempfile2
$ diff tempfile1 tempfile2 > savefile
$ rm tempfile1 tempfile2
有没有巧妙的方法可以做到这一点?希望只用一行,并且不需要临时文件。
因此,它将会是这样的(但显然不完全是这样的):
$ diff $(command1 arguments1) $(command2 arguments2) > savefile
我的机器信息是:
$ uname -a
Linux host.name 3.2.54 #9 SMP Thu Feb 13 08:17:11 CST 2014 x86_64 GNU/Linux
$ which sh
/bin/sh
答案1
在 bash 中,可以使用进程替换:
diff <(command1 arguments1) <(command2 arguments2) > savefile
请注意,这在普通的 sh 中不起作用(甚至在“posix 模式”下的 bash 中也不起作用,即当以名称“sh”调用时,它会关闭一些功能以实现兼容性)。不过,它在 zsh 中可用。