在bash脚本中更正浮点数比较的语法

时间:2014-04-08 01:59:05

标签: bash floating-point

我有一个问题是在bash脚本中从这个条件发出命令,因为bash脚本不支持浮点数。

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

我希望首先使用'或'处理第一和第二个条件。然后在第三个条件下使用'和'但在这种情况下,所有数字都是浮点数,而不是整数。

如何解决这个问题?谢谢

2 个答案:

答案 0 :(得分: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

以上使用if测试中的awk的返回值。

答案 1 :(得分:1)

您可以创建一些函数来授予bc使用浮点数的功能,如Mitch Frazier在Linux Journal中的文章所述:

我相信您可以使用它作为基础来创建自己的函数来进行浮点数比较。我希望这有帮助!

相关问题