bash 中整数比较错误

kim*_*221 0 linux bash comparison integer

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

给我带来问题的行是 $pres_inter 的整数比较。

if (( $pres_inter -lt ${Pres_inter_poly[$int-1]} ))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

line 41:  96800 -lt 98759 : syntax error in expression (error token is "98759 ")
Run Code Online (Sandbox Code Playgroud)

任何解决此问题的提示将不胜感激。可能是一个简单的修复!

lar*_*sks 5

((...))运算符不接受与test[..]、 或[[...]]命令相同的语法。要比较 中的两个数字((...)),您可以使用实际的><符号:

$ (( 4 > 2 )) && echo '4 is bigger!'
4 is bigger!
Run Code Online (Sandbox Code Playgroud)

请参阅手册页ARITHMETIC EVALUATION的 参考资料 部分bash(1)以获取更多信息(或此处)。