[[ $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=0
、var
未定义、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"
这条语句:
[[ $var -eq 0 ]]
当 var=0
、var
未定义、var=''
和 var=' '
(仅空格和制表符)时,return 为真,我相反,仅当 var=0
.
我怎样才能得到这个?
如果您不希望 var
被解释为数字(包括尝试将 non-numeric 值强制转换为合理的数字解释),请改用 =
来执行字符串比较而不是数字比较:
[[ $var = 0 ]]
请注意,当在算术上下文中使用 non-numeric 值时,将空字符串转换为 0 并不是唯一的强制转换。再举一个例子:
var1='var2'
var2=3
[[ $var1 -eq 3 ]] && echo "Strings can be coerced to indirect references"