Re: [問題] shell浮點數運算問題
※ 引述《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 也不行
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.139.44
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1544112306.A.1A4.html
→
12/07 00:16,
7年前
, 1F
12/07 00:16, 1F
→
12/07 00:17,
7年前
, 2F
12/07 00:17, 2F
→
12/07 00:38,
7年前
, 3F
12/07 00:38, 3F
→
12/07 00:38,
7年前
, 4F
12/07 00:38, 4F
→
12/07 00:39,
7年前
, 5F
12/07 00:39, 5F
推
12/07 06:35,
7年前
, 6F
12/07 06:35, 6F
噓
12/07 09:06,
7年前
, 7F
12/07 09:06, 7F
→
12/07 14:45,
7年前
, 8F
12/07 14:45, 8F
→
12/07 14:45,
7年前
, 9F
12/07 14:45, 9F
→
12/07 14:45,
7年前
, 10F
12/07 14:45, 10F
→
12/07 22:02,
7年前
, 11F
12/07 22:02, 11F
→
12/07 22:02,
7年前
, 12F
12/07 22:02, 12F
→
12/10 22:06,
7年前
, 13F
12/10 22:06, 13F
→
12/12 10:24,
7年前
, 14F
12/12 10:24, 14F
→
12/14 23:11,
7年前
, 15F
12/14 23:11, 15F
→
12/15 18:11,
7年前
, 16F
12/15 18:11, 16F
→
12/18 18:43,
7年前
, 17F
12/18 18:43, 17F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Linux 近期熱門文章
21
56
PTT數位生活區 即時熱門文章