日期:2014-05-16  浏览次数:20748 次

unix shell中如何判断两个小数的大小
如题,是判断现系统版本和更新文件版本的

系统版本高的不用更新,系统版本低的需要更新

也就是3.9 4.0 4.1这样的小数

因为我不是针对特定的系统,所以shell命令的话,最好是所有unix都通用的,谢谢了

------解决方案--------------------
shell 對小數沒辦法處理
可以用bc awk之类的工具
http://bbs.chinaunix.net/archiver/tid-606378.html
------解决方案--------------------
a="0.1"
b="8.2"
if [ `expr $a \>= $b ` -eq 1 ]
then
echo $a \> $b
else
echo $a \<\ $b
fi


不过一般的,都是把它分割成多个整数比较,因为版本号经常有2.0.32.2这样的写法。
------解决方案--------------------
BatchFile code

#! /bin/sh
#
# auth: mymtom
# date: 2008-02-20

x=7.0
y=6.3
r=`echo "${x}>${y}" | awk -F '>' '{ print ($1 > $2 ? "yes" : "no") }'`
echo "x=${x}, y=${y}; x>y ? ${r}"

x=5.5
y=6.3
r=`echo "${x}>${y}" | awk -F '>' '{ print ($1 > $2 ? "yes" : "no") }'`
echo "x=${x}, y=${y}; x>y ? ${r}"

x=7.0
y=6.3
r=`echo "${x}>${y}" | awk -F '>' '{ print ($1 > $2 ? "yes" : "no") }'`
echo "x=${x}, y=${y}; x>y ? ${r}"

x=6.3
y=6.3
r=`echo "${x}>${y}" | awk -F '>' '{ print ($1 > $2 ? "yes" : "no") }'`
echo "x=${x}, y=${y}; x>y ? ${r}"