bash 中计算算术表达式有 expr 命令、(( x = expression )) 和 $(( expression )) 三种方式,其中 expr 需要注意 * 号的转义。此外还可通过 declare -i 显式声明整型变量,使其赋值自动按算术求值。
一、方式一 命令expr
命令expr打印算术表达式的结果,但必须小心 * 号
1
2
3
| expr 3 + 12 # 打印 15
expr 3 * 12 # (probably) crashes: * 需要进行转义,这行语句会执行报错
expr 3 \* 12 # 打印 36
|
二、方式二 (( assignable = expression ))
1
2
| (( x = 3 + 12 )); echo $x # 打印 15
(( x = 3 * 12 )); echo $x # 打印 36
|
三、方式三
1
2
| echo $(( 3 + 12 )) # 打印 15
echo $(( 3 * 12 )) # 打印 36
|
四、指定类型
虽然隐式声明变量是bash中的规范,但可以显式声明变量并为其指定类型
指定整型
1
2
3
4
5
6
7
8
9
| declare -i number
number=2+4*10
echo $number # 打印 42
another=2+4*10
echo $another # 打印 2+4*10
number="foobar"
echo $number # 打印 0
|