【发布时间】:2019-07-11 02:14:21
【问题描述】:
我想区分 2 个命令的输出
差异输出 cat file1 和 cat file2
我发现解决办法是
diff <(cat file1) <(cat file2)
然而
如果我将其放入 shell 脚本中 括号无法识别,因为它意味着在shell脚本中调用子shell..(我想知道我所知道的是否正确)
#!bin/bash
diff <(cat $1) <(cat $2)
意外标记 `(' 附近的语法错误
有没有办法在shell脚本中使用需要括号的命令?
我试过了
diff `<(cat $1) <(cat $2)`
diff `<(cat $1)` `<(cat $2)`
diff "<(cat $1) <(cat $2)"
diff <`(`cat $1`)` <`(`cat $2`)`
但以上都不起作用
我曾经将输出转储到其他文件并比较这些文件
cat $1 > out1.txt
cat $2 > out2.txt
diff -b out1.txt out2.txt
我知道这可行,但我只是想知道是否有任何方法可以不事先将输出转储到文件中
【问题讨论】:
-
我怀疑您正在尝试使用
sh yourScript.sh运行脚本,它忽略了 shebang。sh(即使它是指向bash的链接)不支持进程替换。 -
是的,我用 sh 运行我的脚本,所以我可以用其他命令运行它,这样可以吗?
-
你的 shebang 错了。
#!bin/bash!=#!/bin/bash