2014-04-08 96 views
4

因爲bash腳本不支持浮點數,所以我在bash腳本中遇到了這個問題。bash腳本中浮點數比較的正確語法

if ([ $first_util -gt 0.10 ] || [ $first_util -le 1.00 ]) && [ $first_sig -ge $first_sig_min ]; then 
    #state1 
else 
    #state2 
fi 

我想第一和第二條件將首先使用「或」然後與「和」,但在這種情況下,所有的數字都是浮動,而不是整數第三條件進行處理。

如何解決這個問題?謝謝

回答

4

您可以使用awk

first_util=0.2 
first_sig=0.8 
first_sig_min=0.9 
awk_input="$first_util $first_sig $first_sig_min" 
if awk '{ exit !(($1 > 0.1 || $1 <= 1.0) && ($2 >= $3)) }' <<< "$awk_input"; then 
     echo "OK" 
fi 

上述用途的awk返回值的,如果測試。

1

您可以創建幾個職能授予bc能力與浮點數工作,由米奇·弗雷澤在Linux雜誌在這篇文章中所描述的:

我相信你可以用它作爲基礎來創建自己的函數來做浮點數比較。我希望這有幫助!