shell if 小数 比较

shell if 小数 比较shell的[]对于数值的判断都是基于整数的,如果碰到小数就无能为力了。google了一把发现用awk的牛人多,不过发现一个兄弟的更加好。if[`expr$a\>$b`-eq0];thenecho$bisbiggerelseecho$aisbiggerfi通过ex…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

shell的 [ ] 对于数值的判断都是基于整数的,如果碰到小数就无能为力了。
google了一把发现用awk的牛人多,不过发现一个兄弟的更加好。

  1. if [ `expr $a \> $b` eq 0 ];then

  2.     echo $b is bigger

  3. else

  4.     echo $a is bigger

  5. fi


通过expr来进行判断,所以a 和 b 可以是小数。

#########################

上面这个是有bug的!!!!只能比较第一位数字~~~~!坑爹!!!

#########################

正解如下:

在shell脚本中,无法对浮点数进行比较,如:

max=0.1

min=0.01

if [ “$max” -gt “$min” ]

then

echo “YES”

else

echo “NO”

fi

这样的比较,运行后得到错误:

line 4: [: 0.1: integer expression expected

因为bc和awk都支持浮点数,可以使用bc进行处理:

max=0.1

min=0.01

if [ `echo “$max > $min” | bc` -eq 1 ]

then

echo “YES”

else

echo “NO”

fi

也可以写成if [ $(echo “$max < $min”|bc) -eq 1 ]

验证方法:

a=6.3;b=8.4;ret=`echo “$a > $b” | bc` ;echo $ret 

如果返回的是1,则a大,如果不是1,则b大

      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1916029,如需转载请自行联系原作者

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157618.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电容作用分类_电容的分类与识别

    电容作用分类_电容的分类与识别电容分类的N种详解,有图有“真相”电子发烧友网今天一、瓷介电容器(CC)1.结构用陶瓷材料作介质,在陶瓷表面涂覆一层金属(银)薄膜,再经高温烧结后作为电极而成。瓷介电容器又分1类电介质(NPO、CCG));2类电介质(X7R、2X1)和3类电介质(Y5V、2F4)瓷介电容器。2.特点1、类瓷介电容器具有温度系数小、稳定性高、损耗低、耐…

    2022年8月22日
    15
  • docker 查看端口被占用进程[通俗易懂]

    docker 查看端口被占用进程[通俗易懂]以下找到相应进程或容器后,可以将对于进程或容器停止或删除现在希望启动一个dockercontainer,把container中的80端口映射到宿主机。[root@cmdb2~]#dockerrun-p80:80-it9d1c954badc7/bin/bash[root@cmdb2~]#dockerpsCONTAINERIDIM…

    2022年7月27日
    85
  • 如何使用cmd进入MySQL

    如何使用cmd进入MySQL同时按下键盘上的win徽标+R,选择cmd,回车键打开cmd,在命令行中输入mysql-uroot-p切记只有这句话“mysql-uroot-p”,p后面没有分号“;”,否则就会报出以下错误,即提醒使用者不要在cmd命令行中输入密码,这种做法是不安全的。正确示例:C:\Users\hemiao>mysql-uroot-pEnterpassword:******WelcometotheMySQLmonitor.Commandsendwith;or

    2022年6月5日
    67
  • wd移动硬盘不能识别_西数移动硬盘电脑提示无法识别USB设备怎么办「建议收藏」

    展开全部1.造成USB设备无法识别的故障是由于很多原因引起的,包括软、硬件,解决方法32313133353236313431303231363533e58685e5aeb931333337623431如下:首先将usb设备插入计算机接口,然后在桌面左下角单击“开始”菜单,单击“运行”命令,打开框中键入“cmd”命令,单击“确定”按钮。2.启动命令提示符窗口,分别执行以下两条命令regadd”H…

    2022年4月11日
    68
  • perl正则表达式匹配后的各种变量

    perl正则表达式匹配后的各种变量[root@rwsoda203db1perl_tidb]#catp.pl#!/usr/bin/perlusestrict”subs”;usestrict;usev5.16;my$n=3;my$str=”first.<EM>PARENT</EM>LAST”;$str=~m#(<.*?>)(.*?)(</….

    2022年5月6日
    42
  • Centos7下 Redis的安装、配置开机自启动、开放远程连接

    Centos7下 Redis的安装、配置开机自启动、开放远程连接

    2021年10月5日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号