我有一段代码:
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