Bash中的整数类型变量?

Tim*_*Tim 3 shell bash arithmetic variable

Bash中有两种定义和使用整型变量的方法

  • declare -i 一个新变量
  • 在算术表达式中使用变量,而不声明它。

我的问题:

两种方式创建的变量有什么区别?尤其是它们的用途不同,什么时候使用哪个?

jll*_*gre 7

变量类型化的事实赋予了它一些通用变量不具有的属性:

f() {
  v=0xff
  echo $v
  v=hello
  echo $v
  v=123a
  echo $v
}

f
declare -i v
f
Run Code Online (Sandbox Code Playgroud)

将打印

0xff
hello
123a

255
0
bash: 123a: value too great for base (error token is "123a")
Run Code Online (Sandbox Code Playgroud)

如果您确定您的变量将只包含整数值,输入它会给您一些灵活性和错误检查。