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

时间:2012-03-27 00:04:04

标签: linux bash

我有这段代码:

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

抛出此错误:

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

问题是什么?如何比较$ op和字母$ q?

4 个答案:

答案 0 :(得分:5)

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

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

它在Bash中打印test,在严格的bourne兼容shell中输出错误,如dash

请尝试以下方法:

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

或者你可以这样做

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