我最困惑的时间是了解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(重要)”
答案 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