bash:使用 (( "$var" == "string" )) 进行比较的语法错误



我有一段代码:

if(("$op" == "q")); then

它抛出了这个错误:

l5p3.sh: line 10: ((: + == q: syntax error: operand expected (error token is "== q")

出了什么问题?如何将$op与字母$q进行比较?

(( ... ))(用于算术表达式)可能不是您想要的。检查以下内容:

if (("asd" == "bla")); then
  echo test
else
  echo bah
fi

它在Bash中打印test,并在类似dash的严格bourne兼容shell中打印错误。

请尝试以下操作:

if [[ $op == q ]]; then

对于字符串比较,您希望使用双方括号而不是圆括号。正确的做法是:

if [[ "$op" == "q" ]]; then

双括号用于算术表达式而非布尔表达式。看见http://tldp.org/LDP/abs/html/dblparens.html

尝试更改为这个,[]之间的空格非常重要:

op="q"
if [ "$op" == "q" ]; then
     echo "hi"
fi

或者你可以这样做

if test "$op" = "q" ; then
    echo 'hi'
fi

最新更新