linux - bash中的整数比较错误

标签 linux bash integer comparison

我正在尝试在 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 EVALUATIONbash(1)手册页以获取更多信息(或 here )。

关于linux - bash中的整数比较错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219264/

相关文章:

Linux 内核 icmp_reply

regex - 如何将正则表达式的匹配分配给变量?

java - 将每一行从整数列表转换为整数数组?

integer - 在 Delphi 中将枚举值转换为整数

c++ - g++ 4.4.5 的随机整数

python - Linux 上的 cffi 包安装错误

linux - 在 Linux 上安装 SAP NETWEAVER 时出现问题

c++ - Linux 系统的有限插件架构?

python - 以 Python 方式执行 Bash 命令

Bash 条件奇怪行为