我將值0.000000寫入文件中。我打開文件並將其分配給一個變量。 但是,當我比較它的值如if [ "$var" -eq "0.000000" ]
它不計算爲真。 可能是什麼原因?Shell腳本變量值
此外,如果該文件只有0,並且如果我比較它的值[ "$var" -eq "0" ]
,那麼它按照預期評估爲真。
我將值0.000000寫入文件中。我打開文件並將其分配給一個變量。 但是,當我比較它的值如if [ "$var" -eq "0.000000" ]
它不計算爲真。 可能是什麼原因?Shell腳本變量值
此外,如果該文件只有0,並且如果我比較它的值[ "$var" -eq "0" ]
,那麼它按照預期評估爲真。
正如弗雷德裏克(+1對他)說的bash不支持浮點運算。如果你必須使用字符串比較:
if [ "$var" = "0.000000" ]
你可能切換到的ksh支持浮點運算:
$ bash
a=0.00000
[ $a -eq 0 ] && echo ok || echo ko
bash: [: 0.00000: integer expression expected
ko
$ ksh
$ a=0.00000
$ [ $a -eq 0 ] && echo ok || echo ko
ok
$ a=0.00001
$ [ $a -eq 0 ] && echo ok || echo ko
ko
bash無法理解浮點數。嘗試使用bc
,如果相等爲真則返回1,否則返回0。
if [ $(bc <<< $var==0.000000) -eq 1 ]
then
fi
或expr
:
if [ $(expr $var == 0.000000) -eq 1 ]
then
fi
您確保0.00000不被解釋爲數字,因此只等於零? – 2011-05-12 13:23:33
bash不支持浮點。 -eq在整數上運行,而不是str比較。見http://mywiki.wooledge.org/BashPitfalls – 2011-05-12 13:24:23
我只檢查它也是0,但它也返回false。 – thetux4 2011-05-12 13:26:17