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

什么';bash中declare-i的意思是什么?它是否仅将变量限制为数字?,bash,integer,declare,Bash,Integer,Declare,有人能解释一下bash中declare-i的用途吗?是为了安全,所以你不需要对数字进行字符串操作吗 如果我给一个变量分配一个字符串号,我已经可以对它执行数学函数了,那么declare-I的意义是什么呢 declare-i设置名称的integer属性。它根本不影响变量的使用,只影响变量的赋值。赋值的右侧被视为一个算术表达式,因此foo=3+5、foo=“3+5”和foo=$((3+5))是相同的 在我看来,它不是很有用,因为它与显式算术表达式相比没有什么好处。您可以保存3个字符,“…”与$(…),

有人能解释一下bash中
declare-i
的用途吗?是为了安全,所以你不需要对数字进行字符串操作吗


如果我给一个变量分配一个字符串号,我已经可以对它执行数学函数了,那么
declare-I
的意义是什么呢

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


在我看来,它不是很有用,因为它与显式算术表达式相比没有什么好处。您可以保存3个字符,
“…”
$(…)
,(除非您可以安全地将表达式保留为不带引号)。更糟糕的是,它模糊了赋值在实际执行时的语义。(也就是说,当您看到一个赋值时,您需要环顾四周,看看是否在名称上设置了
integer
属性,然后才能知道赋值的实际作用。)

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


在我看来,它不是很有用,因为它与显式算术表达式相比没有什么好处。您可以保存3个字符,
“…”
$(…)
,(除非您可以安全地将表达式保留为不带引号)。更糟糕的是,它模糊了赋值在实际执行时的语义。(也就是说,当您看到作业时,您需要环顾四周,查看名称上是否设置了
integer
属性,然后才能知道作业的实际用途。)

请看一看。谢谢RedX。再次感谢您满足注释长度要求。Bash变量不是
类型的
,但是
declare-i
允许您将
'hint'
发送给shell,希望在变量中找到一个整数值,从而允许对该变量进行算术运算而不会引发错误(例如
((foo++)
),等等,祝你愉快。谢谢你,雷德克斯。再次感谢您满足注释长度要求。Bash变量不是
类型的
,但是
declare-i
允许您将
'hint'
发送给shell,希望在变量中找到一个整数值,从而允许对该变量进行算术运算而不会引发错误(例如
((foo++)
),等