Parameter Details
EXPRESSION 要计算的表达式

Section 26.1: 带有(( ))的简单算术

#!/bin/bash
echo $(( 1 + 2 ))

输出结果: 3

# Using variables
#!/bin/bash
var1=4
var2=5
((output=$var1 * $var2))
printf "%d\n" "$output"

输出结果: 20

Section 26.2: 算术命令

**let**

let num=1+2
let num="1+2"
let 'num= 1 + 2'
let num=1 num+=2

如果有空格或通配符,则需要引号。所以这些会得到错误:

let num = 1 + 2 #wrong
let 'num = 1 + 2' #right
let a[1] = 1 + 1 #wrong
let 'a[1] = 1 + 1' #right

(( ))

((a=$a+1)) #add 1 to a
((a = a + 1)) #like above
((a += 1)) #like above

我们可以在 if 中使用 '(())'。一些例子:

if (( a > 1 )); then echo "a is greater than 1"; fi

(())的输出可以分配给一个变量:

result=$((a + 1))

或直接在输出中使用:

echo "The result of a + 1 is $((a + 1))"

Section 26.3: expr 的简单计算

#!/bin/bash
expr 1 + 2

输出结果: 3