keer_zu 发表于 2022-12-19 14:54

shell中的浮点数比较

由于程序需要,我要判断一个浮点数是否大于另一个浮点数。大概情况描述如下:变量 mya的值为一个两位小数,这个值是这么取的:Shell代码@ubuntu ~]$ df -h
Filesystem            SizeUsed Avail Use% Mounted on
/dev/sda1            5.7G3.0G2.5G55% /

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

keer_zu 发表于 2022-12-19 14:54

mya=` df -h | grep xvda2 | awk '{print $2}' | sed 's/G//' `
然后我希望让它跟4进行判断,一开始是想利用整数来进行判断,但是不行:$if [ $mya -le 4 ]; then echo "ok";else echo "fail"; fi
-bash: [: 5.7: integer expression expected

keer_zu 发表于 2022-12-19 14:54

shell 会报错,提示integer expression expected,

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

keer_zu 发表于 2022-12-19 14:55

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

参考了CU里的大牛们的建议,这样写这个比较就可以了:
$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi

keer_zu 发表于 2022-12-19 14:55

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

页: [1]
查看完整版本: shell中的浮点数比较