Shell脚本变量值

时间:2011-05-12 13:21:35

标签: bash shell variables if-statement

我有一个写在文件中的值0.000000。我打开文件并将其分配给变量。 但是,当我比较它的值if [ "$var" -eq "0.000000" ]时,它不会评估为真。 可能是什么原因?

此外,如果文件只有0,并且如果我比较它的值[ "$var" -eq "0" ],它将按预期评估为真。

3 个答案:

答案 0 :(得分:2)

正如弗雷德里克(他为+1)所说,bash不支持浮点数。如果必须,请使用字符串比较:

if [ "$var" = "0.000000" ]

答案 1 :(得分:1)

您可以切换到支持浮点运算的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

答案 2 :(得分:1)

bash无法理解花车。尝试使用bc,如果相等为真,则返回1,否则返回0。

if [ $(bc <<< $var==0.000000) -eq 1 ]
then

fi

expr

if [ $(expr $var == 0.000000) -eq 1 ]
then

fi