我是 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