随机数生成
# RANDOM生成的随机数小于65535;
$ echo $RANDOM
# 对20取模后生成的随机数必定小于20;
$ echo $[RANDOM%20]
1
2
3
4
5
#RANDOM生成的随机数小于65535;
$echo$RANDOM
#对20取模后生成的随机数必定小于20;
$echo$[RANDOM%20]
算术运算
我们使用计算机免不了做一些简单的数学运算,Shell提供了我们这点需求,如果你必须使用小数的话,那就只能请bc/awk帮忙,bc这个独立的程序提供了精确的计算器语言,可以在shell脚本中使用。
如:变量A=10,B=20然后分别使用不同的计算方式进行计算。计算时可以调用变量也可以直接计算,注意有些计算方式的算术运算符可能不同,具体看下面示例。
1)expr用于整数值运算,每一项用空格隔开,如:
# 第一种
$ expr $A \* $B
30
# 第二种
$ expr 20 % 3
2
# 第三种
$ (expr 10 + 20)
30
1
2
3
4
5
6
7
8
9
10
11
#第一种
$expr$A\*$B
30
#第二种
$expr20%3
2
#第三种
$(expr10+20)
30
2)let表示数学计算,但值之间不能有空格,如:
$ let C=$A+$B
$ echo $C
30
1
2
3
$letC=$A+$B
$echo$C
30
或
$ let C=3\*2
$ echo $C
6
1
2
3
$letC=3\*2
$echo$C
6
3)(())的方式与let类似,如:
$ echo $(($B-$A))
10
1
2
$echo$(($B-$A))
10
4)$[]将中括号内的表达式作为数学运算先计算结果在输出,如:
$ echo $[$A*$B]
200
1
2
$echo$[$A*$B]
200
5)bc利用管道符进行乘法计算,如:
$ echo $B \* $A | bc
200
1
2
$echo$B\*$A|bc
200
6)awk直接计算小数除法,如:
$ awk 'BEGIN{printf "%f\n",10467248/24473084}'
0.427704
1
2
$awk'BEGIN{printf "%f\n",10467248/24473084}'
0.427704
或者
$ awk 'BEGIN{a=10467248/24473084;print a}'
0.427704
1
2
3
$awk'BEGIN{a=10467248/24473084;print a}'
0.427704
当然也支持变量
$ var=10467248
$ awk 'BEGIN{a='$var'/24473084;print a}'
0.427704
1
2
3
$var=10467248
$awk'BEGIN{a='$var'/24473084;print a}'
0.427704
注意,变量需要使用”括起来,不然结果就是错误的了。
$ awk 'BEGIN{a='var'/24473084;print a}'
0
1
2
$awk'BEGIN{a='var'/24473084;print a}'
0
另外,做平方运算。
$ awk 'BEGIN{print 1.11**2.22}'
2.83942
1
2
$awk'BEGIN{print 1.11**2.22}'
2.83942
如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。