我有一个信号文件,其中包含距离信息(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,则执行给定命令,如果不满足条件,则不执行给定命令。
答案 0 :(得分:1)
大多数shell(包括bash
)不执行浮点运算。您需要一个外部程序来完成它。
if [ "$(echo "$DST <= 5000" | bc)" = 1 ]; then
...
fi
bc
从其标准输出读取表达式,对其求值,然后将结果写入标准输出。在比较的情况下,如果比较为true,则写入1
;如果为false,则写入0。