bash 中的 `declare -i` 是什么意思?它是否将变量限制为仅数字?

What's the meaning of `declare -i` in bash? Does it restrict variable to only numbers?

谁能解释 bash 中 declare -i 的用途?是为了安全不要对数字进行字符串运算吗?

如果我将一个字符串数字赋值给一个变量,我已经可以对其进行数学运算,那么 declare -i 有什么意义呢?

declare -i 设置名称的 integer 属性。它根本不影响变量的 use,只影响变量的赋值 to。赋值的右侧被视为算术表达式,因此 foo=3+5foo="3 + 5"foo=$((3 + 5)) 相同。

在我看来,它不是很有用,因为它比显式算术表达式提供的好处少。您保存 3 个字符,"..."$((...)),(除非您可以安全地不使用引号括起表达式)。更糟糕的是,它在实际进行赋值时模糊了赋值的语义。 (也就是说,当你看到一个赋值时,你需要先环顾四周看看名字上是否设置了 integer 属性,然后才能知道赋值实际上做了什么。)