Bash数学运算

from: http://wzgyantai.blogbus.com/logs/35896693.html


使用bash也许有的时候会需要进行数学运算,如果想当然的声明两个变量,然后做数学
运算,结果会让人很意外的,需要使用declare -i命令来声明数字变量
下面是一个例子,运行一下就可以看到结果的差异了~~~
#!/bin/bash
#written by:flythought
#purpose:learn 'declare' in calculation
echo "now an example will be given for 'declare'";
var1=10;
var2=20;
echo "not use declare:"
echo $var1*$var2;
declare -i var3=10;
declare -i var4=20;
echo "when use declare:"
declare -i result=$var3*$var4;
echo $result;
做数学运算还可以用以下三种方法:
j=10
i=20
a=`echo $j + $i | bc -l`#方法1利用bc(-l选项表示使用数学库)
b=`expr $j + $i`#方法2利用内嵌命令expr
c=$(($j+$i))#方法3
printf "$a, $b, $c/n"

浮点运算与比较
默认情况下bash是不支持浮点运算和比较的,而是仅仅支持整形的,但是可以通过借助其他的程序来实现,其中上面的利用bc的方法1就可以进行浮点运算,
命令格式  echo "[选项];操作"|bc [选项],例如
echo "sacle=4;1/100"|bc  #设置精度为小数点后面四位
echo "s(1)/c(1)"|bc -l  #使用数学库计算tan(1)
那么如何利用bc进行浮点数的比较呢?
max=100.5
min=99.6
if [ $(echo "$max > $min"|bc) -eq 1 ]; then echo true
        else
        echo false
fi
解释:将一个逻辑判断式管道传给bc如果结果为真则返回1,否则返回0,这个和c一样,然后就可以利用这个结果进行进一步的操作了~~

此外还可以利用awk进行计算
echo `awk -v x=2.53 -v y=3.64 'BEGIN {printf "%.2f/n",x/y}'`
v=$(echo 123.45 123.44|awk '{ printf "%0.4f/n" ,$1/$2}')
比较也可以
echo 123.45 123.44 | awk '{if($1>$2) {printf"%f >%f/n",$1,$2} else {printf"%f <%f/n",$1,$2}}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值