在shell中比较小数的大小
我们知道在shell中比较整数的方法,即常用的比较命令 -gt
, -lt
, -eq
等,但是,如果数值是小数的话,再使用这些比较指令就会出现语法错误:
上述报错信息是比在多变量赋值比较系统负载值是否大于某个阀值,错误使用如下判断脚本
shell的小数比较方法
方法一:扩大倍数转换成整数比较
首先判断小数后有多少为(N),然后将比较的数值乘以10的N次方,也就是将小数点去掉比较。注意:小数点后位数多的去掉小数点,少的用0补齐
shell内置的计算
(())
和expr
不支持乘除,所以通过bc
进行计算(扩大10的N次方)然后进比较。以下假设进行小数点之后2位精度进行对比(使用${A%%.*}
截掉扩大100倍后小数点之后内容)
方法二:使用awk
awk直接支持小数比较,并且提供了三元运算输出不同的结果。这里输出0表示num1>num2
成立。
方法三:使用expr
的\>
expr
的\>
expr
支持小数对比,返回值1表示大于成立,返回0则不成立
此时返回1
表示变量a大于b成立
方法四:使用br
br
br
也支持小数对比
但是,很不幸,
br
工具多数系统默认不安装
脚本改进
前述脚本改进:
参考
Last updated