初めて使用するbashで単純な整数比較を実行しようとしていますが、メソッドがエラーを引き起こしています。アドバイスをいただければ幸いです。
私の基本的な論理は、ハリケーンのトラック ポイントを読んでいるということです。同じ track_id に異なる圧力値を持つ複数のエントリが存在する場合があります。私がやりたいことは、track_id ごとに 1 つのエントリのみを配列 track_id_poly に格納することです。圧力が最も低いケース。したがって、各行をループして、現在の圧力 ($int の場合) を以前のトラックの圧力 ($int - 1) と比較しようとしています。それが低い場合は、前の配列の値を新しい低い圧力に置き換えます。それが理にかなっていることを願っています。私のコードは以下です。
int=0
while read track_id ppres_inter
do
printf -v pres_inter "%.0f" "$pres_inter"
echo pressure $pres_inter
case $int in
0)
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1)) ;;
*)
if [[ $track_id == ${Track_id_poly[$int-1]} ]]
then
if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
then
Track_id_poly[$int-1]=$track_id
Pres_inter_poly[$int-1]=$pres_inter
fi
else
Track_id_poly[$int]=$track_id
Pres_inter_poly[$int]=$pres_inter
((int=int+1))
fi ;;
esac
done <$file_poly
int_poly=$int
echo Number of polygon crossings from set $i is $int_poly
問題を引き起こしている行は、$pres_inter の整数比較です。
if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
次のエラーが表示されます。
line 41: 96800 -lt 98759 : syntax error in expression (error token is "98759 ")
この問題を解決するためのヒントをいただければ幸いです。おそらく簡単な修正です!