2015-04-29 51 views
0

嗨我想比較bash中的2個浮點數,但是我沒有找到任何可以正常工作的東西。 我的實際代碼如下:在bash中比較浮點值

if [ $(echo " 0.5 > $X " | bc -l)==1 ] 
    echo grande 
    fi 
    if [ "$(bc <<< "$X - 0.5")" > 0 ] ; then 
    echo 'Yeah!' 
    fi 

什麼情況是,無論如果X是大於或小於0.5,它總是回聲兩個句子,我不知道爲什麼。 我知道X大於或小於0.5,因爲我也迴應它,我可以看到它。

+0

http://stackoverflow.com/questions/15224581/floating-point-comparison-with-variable-in-bash –

+1

可能重複的時候,用'[]'比較數字,你應該使用'-gt'而不是'> '。 http://www.tldp.org/LDP/abs/html/refcards.html –

回答

1

在bash中,你需要非常小心間距。例如:

if [ $(echo " 0.5 > $X " | bc -l)==1 ]; then 
    echo grande 
fi 

這裏,還有==周圍沒有空間,所以它會被解釋成:

if [ 0==1 ]; then 
fi 

信不信由你,這種情況是總是如此。

考慮:

if [ "$(echo " 0.5 > $X " | bc -l)" == 1 ]; then 
    echo grande 
fi