我有这段代码:
if(("$op" == "q")); then
抛出此错误:
l5p3.sh: line 10: ((: + == q: syntax error: operand expected (error token is "== q")
问题是什么?如何比较$ op和字母$ q?
答案 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