为什么我可以在Bash中添加String和Int

时间:2017-04-17 21:22:29

标签: string bash variables integer

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?

1 个答案:

答案 0 :(得分:1)

Bash对整数作为变量的真实数据类型一无所知。

算术表达式解析字符串以在内部将它们转换为整数。

您可以将变量声明为整数,如下所示:

declare -i var

这不会真正使变量成为整数,它仍然可以用作任何变量。但是,它会导致赋值尝试被解释为算术表达式(以及它们包含的值为0的未初始化变量)。

例如:

a=1
b=2
declare -i var
var=a+b+3
echo $var # Prints 6

我不能以权威的方式陈述这一点,但我希望"整数"变量只是一个快捷方式,使任何赋值的行为就像它被包含在$(())

中一样