Shell-变量的算术运算

发布时间 2023-11-01 14:33:05作者: 业余砖家

一、算术运算符

1+-

求和、 a+b   a-b   

 

2*/%

求乘积,商,余数    a*b   a/b    a/b

 

3**

幂运算,例如 3**3 是求 3 的立方,即 27

 

4+=-=*=/=%=

a+=1 相当于 a=a+1

 

5++variable- -variable

 先将变量variable的值加1,然后再赋给variable; 先将变量variable的值减1,然后再赋给 variable

 

6variable++variable--

先使用 variable 的值,然后再将该变量的值加 1 ; 先使用 variable 的值,然后再

将该变量的值减 1

二、运算命令

1(())

用于整数运 算的常用运 算符

(()) 中使用变量时可以去掉变量前的 $ 符号

例如: var=$((1+2*9/3))

 

2let

用于整数运算。

使用 let 命令可以执行一个或者多个算术表达式,其中的变量名毋需使用 $ 符号

例如: let  var2=1+2*9/3

 

3expr

可用于整数运算,但还有很多其他的额外功能。

使用 expr 时,运算符及用于计算的数字左右都至少有一个空格,否则会报错;使用乘号时,必须使用反斜线屏蔽其特定含义;使用expr 做计算,将一个未知的变量和一个已知的整数相加,看返回码是否为 0,如果为 0 就认为做加法的变量为整数,否则就不是整数

例如:var3=`expr 1 + 2 \* 9 / 3`

 注意:当反引号中的的数字和+之间存在空格才能计算出结果,否则运行出来的是一个表达式4+2

 

4bc

linux下的一个计算器程序(适合整数及小数运算)

例如:echo `seq -s "+" 10` = `seq -s "+" 10|bc`

1+2+3+4+5+6+7+8+9+10 = 55

seq 是生成数字序列, -s 是指定数字序列之间的分隔符

例如:var4=`echo  1+2*9/3 | bc`

 

5$[]

用于整数运算

例如:var5=$[1+2*9/3]

 

6awk

awk 既可以用于整数运算,也可以小数运算

例如:var6=`awk  'BEGIN { print 1+2*9/3}'`

例如: var7=`echo 1 2 9 3 | awk '{print $1+$2*$3/$4}'`