如何在bash中使用if测试非整数

sha*_*eax 4 linux bash ubuntu

我尝试验证一个带小数的数字是否在指定范围内,我的意思是像下面的例子:

rangeA=58.5
rangeB=61.5
number=62.7

 if [[ ( "$number" > "$rangeA" | bc ) || ( "$number" = "$rangeA" | bc ) ]] && [[ ( "$number" < "$rangeB" | bc ) || ( "number" = "rangeB" | bc ) ]]; then
Run Code Online (Sandbox Code Playgroud)

但我被困在这个操作中,我很感激你的帮助谢谢

eus*_*h77 5

Bash<>比较字符串,-lt-gt比较整数,比较浮点数的唯一方法是外壳bc(1)(你这样做,但你做错了):

rangeA=58.5
rangeB=61.5
number=62.7

if (( $(bc <<<"$number >= $rangeA && $number <= $rangeB") )); then
    echo yes
else
    echo no
fi
Run Code Online (Sandbox Code Playgroud)

bc将 1 或 0 打印到标准输出,bash 的算术上下文 ( ((expression))) 将其测试为零并相应地设置状态代码。