如何比较实数和整数?

时间:2014-08-15 10:27:58

标签: bash comparison

我已经尝试了所有可能的组合来比较实数和整数,但它们似乎都失败了。

例如

if (( "10.0" == "10" )); then
    echo "Joy"
else
    echo "Damn it"
fi

我尝试过方括号,我试过没有引号,我试过-eq,但那只是整数。所以不确定我应该如何在bash中完成这项工作。

2 个答案:

答案 0 :(得分:2)

使用bc

if [[ $(echo "10.0 == 10" | bc) -eq 1 ]]; then
    echo "Joy"
else
    echo "Damn it"
fi

awk也是可能的:

if awk -v op="10.0" 'BEGIN { exit !(op == 10) }'; then

答案 1 :(得分:1)

将两者都转换为float并进行字符串比较:

printf -v a "%f" 10.0
printf -v b "%f" 10
echo $a
echo $b

输出:

10.000000
10.000000