• shell if 浮点数比较


    由于程序需要,我要判断一个浮点数是否大于另一个浮点数。

    大概情况描述如下:

    变量 mya的值为一个两位小数,这个值是这么取的:

    Shell代码  收藏代码
    1. [nigelzeng@ubuntu ~]$ df -h  
    2. Filesystem            Size  Used Avail Use% Mounted on  
    3. /dev/sda1            5.7G  3.0G  2.5G  55% /  
    4.   
    5. [nigelzeng@ubuntu ~]$df -h | grep xvda2 | awk '{print $2}' | sed 's/G//'  
    6. 5.7  
    [nigelzeng@ubuntu ~]$ df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda1            5.7G  3.0G  2.5G  55% /
    
    [nigelzeng@ubuntu ~]$df -h | grep xvda2 | awk '{print $2}' | sed 's/G//'
    5.7

     mya=` df -h | grep xvda2 | awk '{print $2}' | sed 's/G//' `

    然后我希望让它跟4进行判断,

    一开始是想利用整数来进行判断,但是不行:

    Shell代码  收藏代码
    1. [nigelzeng@ubuntu ~]$if [ $mya -le 4 ]; then echo "ok";else echo "fail"; fi  
    2. -bash: [: 5.7: integer expression expected  
    [nigelzeng@ubuntu ~]$if [ $mya -le 4 ]; then echo "ok";else echo "fail"; fi
    -bash: [: 5.7: integer expression expected

     shell 会报错,提示integer expression expected,

    只能判断整数,而不是5.7这个浮点数。

    但是shell里面是没有变量类型的,所以需要想个别的办法。

    参考了CU里的大牛们的建议,这样写这个比较就可以了:

    Shell代码  收藏代码
    1. [nigelzeng@ubuntu ~]$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi  
    [nigelzeng@ubuntu ~]$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi

    这里借助了bc这个命令(bc是一个计算器,Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不在话下。)

    参考:http://bbs.chinaunix.net/thread-1093131-1-1.html

  • 相关阅读:
    iOS UI基础05
    iOS UI基础04
    document.referrer
    节点
    特殊符号编码
    margin和padding的百分比
    XSS要点总结
    页面加载的过程
    函数声明和函数表达式
    jpg和png
  • 原文地址:https://www.cnblogs.com/shixun/p/6179642.html
Copyright © 2020-2023  润新知