我可以从终端运行代码,但在 shell 脚本中运行时相同的命令会出现错误

我可以从终端运行代码,但在 shell 脚本中运行时相同的命令会出现错误

我是 Unix 和 shell 脚本编写的新手,我可以从终端运行代码,但在 shell 脚本中运行时相同的命令会出现错误。

#!/bin/bash
diff <((sort doc1) <(sort doc2)) | grep -x '.\{6\}' >sample.txt

当我运行 shell 时,出现此错误:

/App$ sh filediff.sh 
filediff.sh: 4: filediff.sh: Syntax error: "(" unexpected

答案1

当您在普通 shell 中运行 diff 命令时,您正在使用当前的 shell(主要是 bash)。

您打算为您的脚本使用 bash shell,但如果您使用“shfilediff.sh”调用脚本,您将调用 sh-Shell,这与 bash 有点不同。

您可以使用以下命令调用您的脚本

bash filediff.sh

或者你让它可执行

chmod +x filediff.sh

并调用它

./filediff.sh

答案2

diff 命令用于分析两个文件并打印不同的行。您没有为 diff 命令提供正确的输入文件:

简单修改后的工作脚本是:

sort doc1 | tee tempdoc1
sort doc2 | tee tempdoc2
diff tempdoc1 tempdoc2 | grep -x '.\{6\}'  > sample.txt
echo "Following is difference:"
cat sample.txt

相关内容