a="5"
b=1
c=$((a+b)
echo $c
c打印出6
a="banana"
b=1
c=$((a+b))
echo $c
c打印出1
bash如何识别a =“5”作为整数?为什么a =“banana”变为0?
答案 0 :(得分:1)
Bash对整数作为变量的真实数据类型一无所知。
算术表达式解析字符串以在内部将它们转换为整数。
您可以将变量声明为整数,如下所示:
declare -i var
这不会真正使变量成为整数,它仍然可以用作任何变量。但是,它会导致赋值尝试被解释为算术表达式(以及它们包含的值为0的未初始化变量)。
例如:
a=1
b=2
declare -i var
var=a+b+3
echo $var # Prints 6
我不能以权威的方式陈述这一点,但我希望"整数"变量只是一个快捷方式,使任何赋值的行为就像它被包含在$(())
。