我有一个问题是在bash脚本中从这个条件发出命令,因为bash脚本不支持浮点数。
if ([ $first_util -gt 0.10 ] || [ $first_util -le 1.00 ]) && [ $first_sig -ge $first_sig_min ]; then
#state1
else
#state2
fi
我希望首先使用'或'处理第一和第二个条件。然后在第三个条件下使用'和'但在这种情况下,所有数字都是浮点数,而不是整数。
如何解决这个问题?谢谢
答案 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中的文章所述:
我相信您可以使用它作为基础来创建自己的函数来进行浮点数比较。我希望这有帮助!