在bash的范围测试号(与浮点数) [英] bash test for number in range (with float numbers)
本文介绍了在bash的范围测试号(与浮点数)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题是在这行
的elif [$(回声$一个'>'$ V06 | BC -l)当量1安培;&安培; $(回声$一个'<'$ V08 | BC -l)-eq 1];然后
如何测试如果数字在范围内?
我知道,有可能是这个其他的解决办法,但我想这种方式与BC解决...
A = 0.1
V06 = 0.6
V08 = 0.8如果[$(回声$一个'<'$ V06 | BC -l)-eq 1];然后
回声< 0.6
ELIF [$(回声$一个'>'$ V06 | BC -l)当量1安培;&安培; $(回声$一个'<'$ V08 | BC -l)-eq 1];然后
回声< 0.6 GT; 0.8
其他
回声> 1.5
科幻
解决方案
如果你真的想使用BC:
测试1 = $(BC -l<<<$ {A}< $ {V06})
测试2 = $(BC -l<<<$ {A}> $ {V06})
TEST3 = $(BC -l<<<$ {A}< $ {V08})
如果[[$ {} TEST1 1当量]];然后
布拉布拉
ELIF [[$ {} TEST1当量1安培;&安培; $ {} TEST2 1当量]];然后
布拉布拉
科幻
我推荐使用围绕一个变量括号(所以你一定06和08不会被追加到 $ V
),使用双括号你的测试,如果你使用的是像&放操作;&安培;
the problem is in this line
elif [ "$(echo $a '>' $v06 | bc -l)" -eq 1 && "$(echo $a '<' $v08 | bc -l)" -eq 1 ];then
How can I test if the number is in range ? I know that there might be other solution for this but I want to solve in this way with bc...
a=0.1
v06=0.6
v08=0.8
if [ "$(echo $a '<' $v06 | bc -l)" -eq 1 ];then
echo " <0.6"
elif [ "$(echo $a '>' $v06 | bc -l)" -eq 1 && "$(echo $a '<' $v08 | bc -l)" -eq 1 ];then
echo " <0.6 >0.8"
else
echo ">1.5"
fi
解决方案
If you really want to use bc:
test1=$(bc -l <<< "${a} < ${v06}")
test2=$(bc -l <<< "${a} > ${v06}")
test3=$(bc -l <<< "${a} < ${v08}")
if [[ ${test1} -eq 1 ]]; then
blabla
elif [[ ${test1} -eq 1 && ${test2} -eq 1 ]]; then
blabla
fi
I recommend to use braces around a variable (so you are sure 06 and 08 won't be append to $v
), use double brackets in your tests if you are using operators like &&
.
这篇关于在bash的范围测试号(与浮点数)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文