随机数生成
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用于整数值运算,每一项用空格隔开,如:
1 2 3 4 5 6 7 8 9 10 11 |
# 第一种 $ expr $A \* $B 30 # 第二种 $ expr 20 % 3 2 # 第三种 $ (expr 10 + 20) 30 |
2)let表示数学计算,但值之间不能有空格,如:
1 2 3 |
$ let C=$A+$B $ echo $C 30 |
或
1 2 3 |
$ let C=3\*2 $ echo $C 6 |
3)(())的方式与let类似,如:
1 2 |
$ echo $(($B-$A)) 10 |
4)$[]将中括号内的表达式作为数学运算先计算结果在输出,如:
1 2 |
$ echo $[$A*$B] 200 |
5)bc利用管道符进行乘法计算,如:
1 2 |
$ echo $B \* $A | bc 200 |
6)awk直接计算小数除法,如:
1 2 |
$ awk 'BEGIN{printf "%f\n",10467248/24473084}' 0.427704 |
或者
1 2 3 |
$ awk 'BEGIN{a=10467248/24473084;print a}' 0.427704 |
当然也支持变量
1 2 3 |
$ var=10467248 $ awk 'BEGIN{a='$var'/24473084;print a}' 0.427704 |
注意,变量需要使用”括起来,不然结果就是错误的了。
1 2 |
$ awk 'BEGIN{a='var'/24473084;print a}' 0 |
另外,做平方运算。
1 2 |
$ awk 'BEGIN{print 1.11**2.22}' 2.83942 |