※ 引述《zchien (小建)》之铭言:
: 我用unix 系统
: 写sh时,遇到了一个bug ,就是浮点数无法运算
: 我使用ntpdate去校正时间, 并且记录校正了多少时间
: 例如:需要校正的时间是 0.000304 s
: 我写
: ntpdate -p 10.37.82.23 > time.txt
: NTP= grep delay time.txt | awk ' ' {print $6}
: # $NTP will show 类似 0.000304
: if [ $NTP -le 0.100001 ];then
: ntpdate -u 10.37.82.23
: fi
: # 如果NTP server 连线异常, $NTP will show 0.000000
: if [ $NTP -eq 0.000000 ];then
: echo "NTP server not connect"
: fi
: 上面第一个if 会 不成立 , 可能类似浮点数运算, 他以为两个都是0
: 第二个if 也会显示错误, [0.000000 -eq 0.000000 ] 他竟然显示不相等
: 请问这是什么原因,我可以怎么修正
我找到bc的用法了,但是会有问题
http://0rz.tw/FlVdf
ntpdate -q 10.37.82.23 > time.txt
# $NTP will show 类似 0.000304
NTP=$(grep delay time.txt | awk '{print $6}')
if [ `echo "$NTP"|bc` -ge `echo 0.100001 |bc` ] ; then
echo "NTP > 0.100001"
if
我使用sh -vx script 去看它显示状态
这会显示
+[ 0.000304 -ge 0.100001 ]
+echo NTP > 0.100001
echo NTP > 0.100001
而且-ge 不论改成 -eq , -le 都是一样的结果
请问这是什么原因
用awk 也不行