比较bash中的if语句中的浮点数

时间:2019-04-09 14:50:38

标签: bash shell

我有一个信号文件,其中包含距离信息(DIST)。基于DIST值,我想对信号文件执行程序命令。我已经尝试过if语句,但无法克服它。

for i in *sac
do

    DST=`saclhdr -DIST $i`

    if [ "$DST" <= "5000" ] ; then

gsac << EOF
cut b b 1200
r $i
w append .cut
quit
EOF
    fi
done

在上面的代码中说DST = 3313.7,如果它小于或等于5000,则执行给定命令,如果不满足条件,则不执行给定命令。

1 个答案:

答案 0 :(得分:1)

大多数shell(包括bash)不执行浮点运算。您需要一个外部程序来完成它。

if [ "$(echo "$DST <= 5000" | bc)" = 1 ]; then
    ...
fi

bc从其标准输出读取表达式,对其求值,然后将结果写入标准输出。在比较的情况下,如果比较为true,则写入1;如果为false,则写入0。