ShellScript 1:[:[:意外的运算符

时间:2014-10-06 21:29:38

标签: linux file shell text compare

我遇到了无法修复的问题。这可能是一些语法问题,我已经尝试了这么多解决方案,但没有弄清楚问题..

我尝试使用括号..没有括号,我仍然在控制台上出现此错误:

1: [: [: unexpected operator
是的,有人能帮帮我吗? 这是我的代码:

if [ [ cmp --silent 1.fsa 1_.fsa ] returns any ]; then
  echo "Files are different!"
else
 echo "Files are identical!"
fi

顺便说一句,我试图比较一个ShellScript中的两个文件,如果它们是相同的我想说: “档案完全相同!” 否则我想说:“文件不同!”

提前多多感谢!

2 个答案:

答案 0 :(得分:3)

根本不要使用括号。

if cmp -s 1.fsa 1_.fsa; then
  echo "Files are identical!"
else
  echo "Files are different!"
fi

[ ]运行名为test的命令。如果您阅读man test,您会发现它并不理解"会返回任何"意思是什么;它也不希望看到[传递给它。

所以,你得到的字面错误:

[: [: unexpected operator

表示[命令(又称测试)抱怨它不希望传递[作为参数。

答案 1 :(得分:0)

我找到了这个解决方案:

if diff file1 file2 >/dev/null ; then
  echo Same
else
  echo Different
fi

但有人可以说我的实施有什么问题吗? 谢谢;)