如何区分 Shell 脚本中两个命令的重定向

如何区分 Shell 脚本中两个命令的重定向

在命令行中我可以使用以下方法比较两个命令的输出

$ diff <(cmd1) <(cmd2)

但如果我把它放在 shell 脚本中

$ sh do_two_comands_diff.sh

这是行不通的

$ diff <(ls) <(ls -a)
0a1,2
> .
> ..

$ cat > test_diff.sh
diff <(ls) <(ls -a)
^D

$ sh test_diff.sh
test_diff.sh:1: test_diff.sh: Syntax error: "(" unexpected

我尝试使用 $() 代替 (),但没有成功。我知道在 shell 中,有时需要以不同于控制台的方式完成某些事情,但在这里我一点头绪都没有。有人能指点我到正确的链接,让我了解如何在 shell 中正确地完成这些事情以及为什么会发生这种情况吗?

页。

答案1

确保在脚本中使用与在命令行上使用相同的解释器,方法是在前面添加

#!/bin/bash

相关内容