shell中的数学计算
一、使用方括号
#!/bin/bash
a=
b=
c= res=$[$a * ($c-$b)]
echo $res
二、使用(())
echo $((+))
((i=+))
b=$((-*)) echo $((a+=))
echo $((a**)) #计算a的平方
echo $((<)) #输出1
echo $((i++))
echo $((RANDOM%)) #产生一个不大于60的随机数
三、bc的用法
bc技术器实际上是一种编程语言,它可以识别:
数字(整数和浮点数)
变量(简单变量和数组)
注释(以#或C语言中的/* */开始的行)
表达式
编程语句(例如if-then语句)
函数
浮点运算是由内建变量scale控制的。必须将这个值设置为你希望在计算结果中保留的小数
位数,否则无法得到期望的结果。
$ bc -q
3.44 / scale=
3.44 /
.
quit
$
bc还能支持变量:
$ bc -q
var1=
var1 * var2 = var1 /
print var2 quit
$
脚本中使用bc:
方式一:
variable=$(echo "options; expression" | bc)
实例:
#!/bin/bash
var1=$(echo "scale=4; 3.44 / 5" | bc)
echo The answer is $var1
方式二,使用内联输入,格式:
variable=$(bc << EOF
options
statements
expressions
EOF
)
var1=10.46
var2=43.67
var3=33.2
var4=
var5=$(bc << EOF
scale =
a1 = ( $var1 * $var2)
b1 = ($var3 * $var4)
a1 + b1
EOF
)
三、Shell中产生随机数的方法
1)通过系统变量RANDOM
#范围:~,因此用于加密时加密性不太好
echo $RANDOM
2)通过openssl产生随机字符串
openssl rand -base64
3)通过date产生
date +%s%N
4)通过/dev/urandom配合chksum
head /dev/urandom|cksum
四、常见用法
expr $a + &> /dev/null #判断是否为数字的方法
RA=$?
expr $b + &> /dev/null
RB=$?
if [ $RA -ne -o $RB -ne ];then
echo 'one of the input is not num!!!!'
exit
fi