You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本读取txt文件做整数比较 报算术运算符无效错误

问题原因
  • 你的源文件为Windows编码格式,行尾携带不可见的\r回车符,读取热度值时,temp变量末尾会附带这个字符,导致-gt整数比较操作无法识别为合法整数,触发integer expression expected报错。
  • 你之前使用的cut拆分字段的写法冗余,遇到格式异常行时容易出现空值,也可能引发额外报错。
修复步骤
  1. 先统一转换源文件的换行符为Unix格式,清理行尾\r字符:
    如果系统安装了dos2unix工具,直接执行:
    dos2unix homerseklettest3.txt
    没有的话用sed也可以完成清理:
    sed -i 's/\r$//' homerseklettest3.txt

  2. 优化脚本逻辑,直接通过read指定分隔符拆分字段,同时增加数值合法性校验,避免异常行报错,修改后的完整脚本如下:

#!/bin/bash
highestTemp=-10000
highestTempX=0
highestTempY=0
# 指定分隔符为逗号,直接拆分字段,不需要的日期、时间字段用_占位忽略
while IFS=, read -r x y _ _ temp
do
    # 先校验temp为纯整数再执行比较,避免异常值报错
    if [[ "$temp" =~ ^[0-9]+$ && "$temp" -gt "$highestTemp" ]]
    then
        highestTemp=$temp
        highestTempX=$x
        highestTempY=$y
    fi
done < homerseklettest3.txt

echo "Highest Temperature: $highestTemp Coordinates: $highestTempX $highestTempY"
运行结果

执行修改后的脚本即可得到预期输出:

Highest Temperature: 120 Coordinates: 92.7418529 99.9999999

内容的提问来源于stack exchange,提问作者SnowballAvocado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:45:04