[[ $var -eq 0 ]] returns true 即使变量未设置、为空或仅包含空格和制表符

[[ $var -eq 0 ]] returns true even when the variable is unset, empty, or contains only spaces and tabs

这条语句:

[[ $var -eq 0 ]]
var=0var 未定义、var=''var=' '(仅空格和制表符)时,

return 为真,我相反,仅当 var=0.

时才希望语句 return 为真

我怎样才能得到这个?

如果您不希望 var 被解释为数字(包括尝试将 non-numeric 值强制转换为合理的数字解释),请改用 = 来执行字符串比较而不是数字比较:

[[ $var = 0 ]]

请注意,当在算术上下文中使用 non-numeric 值时,将空字符串转换为 0 并不是唯一的强制转换。再举一个例子:

var1='var2'
var2=3
[[ $var1 -eq 3 ]] && echo "Strings can be coerced to indirect references"