在 tcsh 中对命令输出进行操作

And*_*ern 4 tcsh

我认为在 tcsh 中执行 subshel​​l 命令的正确运算符是反引号,`但是当我尝试对两个命令的结果进行比较时,出现错误。当我首先将信息定向到文件并对这两个文件进行比较时,我得到的正是我想要的,但我宁愿只使用一个命令,例如:

diff `jar -tvf org.jar` `jar -tvf new.jar`
Run Code Online (Sandbox Code Playgroud)

tcsh 中的正确语法是什么?

Gil*_*il' 5

您有正确的命令替换语法。但是您需要传递的diff是两个文件,而不是两个文件内容,这正是您要传递的内容。(您实际传递的内容实际上更复杂,但是如果您编写了diff "`jar -tvf org.jar`" "`jar -tvf new.jar`",您将传递两个文件内容。)

我认为 tcsh 没有办法在不创建临时文件的情况下做您想做的事情。在 ksh、bash 或 zsh 中,您可以这样做:

diff <(jar -tvf org.jar) <(jar -tvf new.jar)
Run Code Online (Sandbox Code Playgroud)