问题
我必须将字符串“problem1.sh”与其自身进行比较。在我使用方括号进行比较的情况下solution1.sh (如下所示),它工作正常。但是,在我使用圆括号的情况下solution2.sh (如下所示),它不起作用。它显示了提到的错误(如下所示)。
我尝试过什么?
我试图从这里和这里了解在 bash 脚本中使用方括号和圆括号之间的区别。我知道它((expression))用于比较算术值,而不是用于字符串值。
那么,是什么造成了这个问题?
如果我从字符串“problem1.sh”中删除子字符串“.sh”并使用相同的语句进行比较if (("problem1" == "problem1")),它工作正常。但是,当我只是添加“。” 在字符串中,它会产生问题。即使我删除了除“.”之外的所有内容。从字符串并使用语句if (("." == ".")),它显示我错误。
然后,我的问题
如果该语句if (("problem1" == "problem1"))可以正常工作(可能对英文字母的每个字母都可以正常工作),为什么“。” 字符串会产生问题吗?我的意思是,为什么我们不能比较“。” if (("." == "."))当我们可以使用相同的表达式(例如if (("findError" == "findError")))比较字母时,在 bash 脚本的 if 语句(例如)中使用圆括号?
解决方案1.sh
if [ "problem1.sh" == "problem1.sh" ]
then
printf "Okay"
fi
Run Code Online (Sandbox Code Playgroud)
解决方案2.sh
if (( "problem1.sh" == "problem1.sh" ))
then
printf "Okay"
fi
Run Code Online (Sandbox Code Playgroud)
solution2.sh …