bash脚本if语句,比较十进制

时间:2016-11-09 09:01:59

标签: bash shell

bash脚本的新手,并且在使用以下代码时遇到问题。 我试图将数组编号与您从“读取ans”输入的数字进行比较,问题主要是比较十进制数

    BGpercent=(0 99 99.3 99.6 99.8 100)
    BGpoint=(0 1 2 3 4 5) 
    read ans
    for (( c=${#BGpercent[@]}; c>=0; c-- ))
    do  
       echo "${BGpercent[$c]}"
        if [ "${BGpercent[$c]}" <= "$ans"  ];  
        then
        result=${BGpoint[$c]}
        break
        fi
    done
    echo $result | bc -lstrong text

Error - ./testscript.sh: =: No such file or directory

2 个答案:

答案 0 :(得分:1)

我想问题出在你的if检查(浮点比较)中。

#!/bin/bash

    BGpercent=(0 99 99.3 99.6 99.8 100)
    BGpoint=(0 1 2 3 4 5)
    read ans
    for (( c=$[ ${#BGpercent[@]} - 1 ] ; c>=0; c-- ))
    do
        if (( $(echo "${BGpercent[$c]} <= $ans" |bc -l) ));
        then
        result=${BGpoint[$c]}
        break
        fi
    done

此外,变量c值必须在开头递减,否则它将包含无效的索引值。我不确定你打算用最后一行(echo $result | bc -lstrong text

做什么

答案 1 :(得分:0)

BGpercent =(0 99 99.3 99.6 99.8 100) BGpoint =(0 1 2 3 4 5)

echo“写下您的号码:” 读号码

for((c = $ {#BGpercent [@]} - 1; c&gt; -1; c--)) 做 echo $ {BGpercent [$ c]} 布尔= echo "if (${BGpercent[$c]} <= ${number}) 1" | bc if [“$ bool”1 -eq 11];然后    结果= $ {BGpoint [$ C]}    打破 网络