Chinaunix
标题:
数值计算和比较问题
[打印本页]
作者:
磨即
时间:
2015-04-27 11:08
标题:
数值计算和比较问题
shell中传统的数值计算都只针对于整数,现在我有个下面的问题
test1.sh:
#!/bin/bash
per=0.8
m=`echo 10*$per|bc`
n=11
if [[ $m < $n ]];then
echo "n is bigger"
else
echo "m is bigger"
fi
运行后:
[#####@rhel12146]$ sh -x test1.sh
+ per=0.8
++ bc
++ echo '10*0.8'
+ m=8.0
+ n=11
+ [[ 8.0 < 11 ]]
+ echo 'm is bigger'
m is bigger
因为m变量得到的是字符串,在比较中是按字符串的大小来比较,所以我现在想问的是:
1,如何用bc命令使得可以进行数值比较?
2,有没有别的其他更好的方法,比如awk有数值计算的功能
作者:
Shell_HAT
时间:
2015-04-27 11:12
1,如何用bc命令使得可以进行数值比较?
用bc做个减法试试呢
作者:
ly5066113
时间:
2015-04-27 11:17
回复
1#
磨即
try:
#! /bin/bash
per=0.8
n=11
if [ $(echo "10 * $per < $n" | bc -q) -eq 1 ]
then
echo "n is bigger"
else
echo "m is bigger"
fi
复制代码
作者:
磨即
时间:
2015-04-27 12:11
可以的
回复
3#
ly5066113
作者:
磨即
时间:
2015-04-27 12:11
可以的
回复
3#
ly5066113
作者:
jason680
时间:
2015-04-27 12:12
回复
1#
磨即
$ echo 0.8 11 | awk '{big=(
10**$1<$2
)?"n":"m";print big" is bigger"}'
n is bigger
$ if [ "8"
-lt
"11" ]; then echo "n is bigger";else echo "m is bigger"; fi
n is bigger
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2