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:
  1. #! /bin/bash

  2. per=0.8
  3. n=11
  4. if [ $(echo "10 * $per < $n" | bc -q) -eq 1 ]
  5. then
  6.         echo "n is bigger"
  7. else
  8.         echo "m is bigger"
  9. 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