let
变量前不加上"$",像C语言中两个init型变量之间相加
#!/bin/bash
NUM=10
let NUM++
echo ${NUM}
NUM1=20
let NUM2=NUM+NUM1
echo ${NUM2}
11
31
[]
[]之间带不带空格都可以
#!/bin/bash
NUM1=10
NUM2=20
echo $[ $NUM1 + $NUM2 ]
echo $[ NUM1 + NUM2 ]
30
30
(())
与[]操作一样,只是在最外边要加上"$"
#!/bin/bash
NUM1=10
echo $(($NUM1+10))
echo $(($NUM1+20))
20
30
expr
使用expr两个操作数与"+"之间要有空格,不然会得到其他结果
#!/bin/bash
NUM1=10
NUM=`expr 3 + 4`
echo $NUM
NUM2=$(expr $NUM1 + 20)
echo $NUM2
7
30
NUM2=$(expr $NUM1+20)
echo $NUM2
10+20
bc
注:该命令有的机器没有安装,建议使用awk
可以计算浮点数,通常与echo一起使用在管道"|"连接bc
#!/bin/bash
NUM=10
echo "3.01 + 4" | bc
echo "obase=2;$NUM" | bc
NUM1=1010
echo "obase=10;ibase=10;$NUM1" | bc
NUM2=20
result=`echo "obase=9;ibase=2;$NUM2" | bc`
echo $NUM2
echo "sqrt(100)" | bc
7.01
1010
1010
20
10
awk
echo 23 20 | awk '{print $1-$2}'
3
0