在bash的范围测试号(与浮点数) [英] bash test for number in range (with float numbers)

查看:113
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆