使用let、(())、
(
(
)
)
或
(())或
(())或[]进行基本的整数运算,使用bc进行高级的运算,包括小数运算。其中expr命令也能进行整数运算,还能判断参数是否为整数,具体用法见expr命令全解。
其中let和(())几乎完全等价,除了做数学运算,还支持数学表达式判断,例如数值变量a是否等于3:let a3或((a3)),但一般不会使用它们来判断,而是使用test命令结合条件表达式:test “$a” -eq 3。
1.整数运算
1.1 let
[root@master ]# str=10
[root@master ]# let str=str+6 # 等价于let str+=6
[root@master ]# let str-=5 # 等价于let str=str-5
[root@master ]# echo $str
11
1.2 使用$(())或$[ ]
[root@xuexi ~]# str=10
[root@xuexi ~]# echo $((str+=6))
16
[root@xuexi ~]# echo $[str=str-6]
10
在为变量赋算术值的时候也可以使用 ( ( ) ) 和 (())和 (())和[]。
[root@xuexi ~]# str=10
[root@xuexi ~]# str=$((str+=6));echo $str
16
[root@xuexi ~]# str=$[str-=6];echo $str
10
在算数计算过程中,等号右边的变量是可以带上$符号的,但等号左边的变量不允许带上$符号,因为它是要操作的变量,不是引用变量。
[root@xuexi ~]# let str=$str-1 # 等价于let str=str-1
[root@xuexi ~]# str=$(($str-1)) # 等价于str=$((str-1))
[root@xuexi ~]# srt=$[$str-1] # 等价于str=$[str-1]
[root@xuexi ~]# echo $((str=$str-1)) # 等价于echo $((str=str-1)),但不能写成echo $(($str=str-1))
[root@xuexi ~]# echo $[str=$str-1] # 等价于echo $[str=str-1],但不能写成echo $[$str=str-1]
1.3 自增、自减
"++“和”–"表示变量自动加1和减1。但是位置不同,返回的结果是不同的。
[root@xuexi ~]# x=10;echo $((x++));echo $x
10
11
[root@xuexi ~]# echo $((x++));echo $x
11
12
let i=i-1
let i=$i-1
let i-=1
i=$((i-1))
i=$(($i-1))
i=$[ i - 1 ]
i=$[ $i - 1 ]
echo $((i=i-1))
echo $((i=$i-1))
let arr_test[a]=${arr_test[0]} - 1
let arr_test[a]-=1
echo $((arr_test[a]++))
echo $[ arr_test[a]++ ]
————Blueicex 2020/03/07 21:30 blueice1980@126.com