我遇到了无法修复的问题。这可能是一些语法问题,我已经尝试了这么多解决方案,但没有弄清楚问题..
我尝试使用括号..没有括号,我仍然在控制台上出现此错误:
1: [: [: unexpected operator
是的,有人能帮帮我吗?
这是我的代码:
if [ [ cmp --silent 1.fsa 1_.fsa ] returns any ]; then
echo "Files are different!"
else
echo "Files are identical!"
fi
顺便说一句,我试图比较一个ShellScript中的两个文件,如果它们是相同的我想说: “档案完全相同!” 否则我想说:“文件不同!”
提前多多感谢!
答案 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
但有人可以说我的实施有什么问题吗? 谢谢;)