我尝试验证带小数的数字是否在指定范围之间,我的意思如下例:
rangeA=58.5
rangeB=61.5
number=62.7
if [[ ( "$number" > "$rangeA" | bc ) || ( "$number" = "$rangeA" | bc ) ]] && [[ ( "$number" < "$rangeB" | bc ) || ( "number" = "rangeB" | bc ) ]]; then
但是我坚持这个行动,我将非常感谢你的帮助 感谢
答案 0 :(得分:4)
您可以使用awk:
rangeA=58.5
rangeB=61.5
number=62.7
if awk -v number=$number -v rangeA=$rangeA -v rangeB=$rangeB '
BEGIN{exit !(number >= rangeA && number <= rangeB)}'
then
echo "condition matched"
else
echo "condition didn't match"
fi
答案 1 :(得分:3)
Bash的<
和>
比较字符串,-lt
和-gt
比较整数,比较浮点数的唯一方法是shell to { {1}}(你这样做,但你做错了):
bc(1)
rangeA=58.5
rangeB=61.5
number=62.7
if (( $(bc <<<"$number >= $rangeA && $number <= $rangeB") )); then
echo yes
else
echo no
fi
将1或0打印到标准输出,bash的算术上下文(bc
)将其测试为零并相应地设置状态代码。
答案 2 :(得分:1)
bc
可以使用&#34;和&#34;,&&
或&#34;或&#34;,||
逻辑对数字进行复杂测试。如果条件为真,bc
将1
回显到标准输出。我们可以使用1
来grep -q 1
测试-q
,其中grep
选项告诉if bc <<< "$number >= $rangeA && $number <= $rangeB" | grep -q 1
then
echo True
else
echo False
fi
安静并且不会在stdout上产生任何内容:
double[][] input = new double[5][5];
// initialize arr here
ClassName num1 = new ClassName(input);
答案 3 :(得分:1)
不确定您的if
是否是必需的,但您也可以使用awk
中的三元运算符:
awk -v n=$number -v a=$rangeA -v b=$rangeB \
'BEGIN{print(n >= a && n <= b)?"yes":"no"}'
隐含的if-else的排序。