我正在尝试在 bash 中执行一个简单的整数比较,我是新手,但我的方法导致了错误。任何建议将不胜感激。
我的基本逻辑是我正在阅读飓风轨迹点。同一个 track_id 可能有多个条目,具有不同的压力值。我想要做的是将每个 track_id 的条目仅存储到数组 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 ")
解决此问题的任何提示将不胜感激。可能是一个简单的修复!
最佳答案
((...))
运算符不接受与 test
相同的语法, [..]
, 或 [[...]]
命令。比较 ((...))
中的两个数字,您将使用实际的 >
或 <
符号:
$ (( 4 > 2 )) && echo '4 is bigger!'
4 is bigger!
参见 ARITHMETIC EVALUATION
节bash(1)
手册页以获取更多信息(或 here )。
关于linux - bash中的整数比较错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219264/