Bash脚本,如果语句未正确评估字符串/浮点数比较(括弧式)

时间:2019-05-15 21:31:48

标签: bash

我最困惑的时间是了解bash如何准确地评估语句。我写了下面的脚本,效果很好。给定输入浮点数,它可以正确进行比较。这是脚本:

read test
if [ $( echo "$test < 0.001" | bc) -eq 1 ]; then
    echo "CONDITION"
else
    echo "HI"
fi

然后我将其添加到此处的更大的bash脚本中

result=`eval "${comparison_cmd}"`
parse="$(echo $result | cut -d "(" -f2 | cut -d ")" -f1)"
echo $parse
if [ $( echo "$parse < 0.001" | bc) -eq 1 ]; then

对于某些背景结果,最终得到的字符串是“ GARBAGE(重要数字)”,因此目标是获取括号内的重要数字并将其用于比较。

这似乎在评估什么都不是,我不确定bash为什么不按预期解释此声明。我确实必须将if语句放在''中以删除语法错误。注意我已经在上面删除了它,因为显然该语句始终是正确的。

比较命令是一个bash脚本,需要运行它才能获取字符串“ GARBAGE(重要)”

1 个答案:

答案 0 :(得分:1)

这是您想要的吗?

parse="$(echo "$result" | cut -d "(" -f2 | cut -d ")" -f1)"
echo "$parse"
if [ "$(echo "$parse < 0.001" | bc)" -eq 1 ]; then
    echo foo
else
    echo bar
fi