这里我看到[[
允许字符串和整数之间的比较。
[usr1@host dir]$ echo $count1
[1] "0"
[usr1@host dir]$ echo $count2
13188
[usr1@host dir]$ if [[ $count1 -ne $count2 ]]
> then
> echo "NE"
> fi
bash: [[: [1] "0": syntax error: operand expected (error token is "[1] "0"")
#this worked fine at one point
if [[ $count1 -ne $count2 ]] then
echo "NE"
fi
syntax error near unexpected token 'then'
if [[ $count1 -ne $count2 ]]; then
echo "NE"
fi
[[: [1] "0": syntax error: operand expected (error token is "[1] "0"")
我对语法的工作方式感到非常困惑。我们如何应对不同的场景?如何防止语法错误,无论值如何变化(我猜这就是它现在给出错误的原因)。
答案1
您的count1
变量包含字符串[1] "0"
。这是一个八个字符的字符串不是一个整数。
即使价值是公正的,存在的"0"
检验也是[[ $count1 -ne $count2 ]]
$count1
"0"
非常不一样from[[ "$count1" -ne "$count2" ]]
是$count1
单个字符串0
。