小编Md.*_*med的帖子

为什么我们不能比较。(dot) 作为 if 语句圆括号内的字符串值?

问题

我必须将字符串“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 …

shell bash string shell-script arithmetic

3
推荐指数
1
解决办法
512
查看次数

标签 统计

arithmetic ×1

bash ×1

shell ×1

shell-script ×1

string ×1