我正在尝试比较BASH中的一些字符
read a
if (($a == "Y"))
then
echo "YES"
elif (($a == "y"))
then
echo "YES"
else
echo "NO"
fi
但由于某种原因,它无法按预期工作。它总是输出YES。看着这个超级简单的脚本,我无法理解什么是错误的。
答案 0 :(得分:6)
这是由于间距和括号。
read a
if [[ $a == "Y" ]]
then
echo "YES"
elif [[ $a == "y" ]]
then
echo "YES"
else
echo "NO"
fi
答案 1 :(得分:1)
您应该查看bash comparison。您尝试使用算术扩展构造进行字符串比较。相反,您应该使用[ exp ]
或[[ exp ]]
构造。
答案 2 :(得分:0)
((表达式))用于'算术评估',(())内的字符串将被视为变量名,因此
if(($ a ==“Y”))
相当于
如果[$ a == $ Y]
(如果$ Y是一个字符串,那么bash将尝试扩展名称,直到找到数值或未定义的变量)
您需要使用[]或[[]]来比较字符串,如@KRUKUSA所说。