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

autonetplan脚本更新功能jq解析错误求助:版本提取异常

解决autonetplan.sh版本更新功能的jq解析错误问题

错误原因分析

jq: parse error: Invalid numeric literal 错误说明你的jq命令在解析JSON时,试图把非纯数值内容转成数字,或者JSON结构和代码预期不符。结合你的场景,大概率是以下两种情况:

  • GitHub Release的版本号带v前缀(比如v1.0.0),但代码里直接用tonumber转换,导致解析失败
  • 代码中的jq表达式引用了错误的JSON字段,或是curl返回内容并非有效JSON(比如网络错误、API请求失败返回的HTML页面)

排查与修复步骤

  1. 验证GitHub API返回内容
    手动执行curl命令查看返回的JSON结构:

    curl -s https://api.github.com/repos/Nisamov/autonetplan/releases/latest
    

    确认版本号字段是tag_name(GitHub Release API的标准字段),以及字段值的格式(是否带v前缀)。

  2. 修正jq解析逻辑
    如果版本号带v前缀,需要先去除前缀再处理,示例代码:

    # 获取最新版本号(去除v前缀)
    latest_version=$(curl -s https://api.github.com/repos/Nisamov/autonetplan/releases/latest | jq -r '.tag_name | ltrimstr("v")')
    # 获取本地版本号(假设本地VERSION变量也带v前缀,同样处理)
    local_version=$(grep -E '^VERSION=' autonetplan.sh | cut -d'=' -f2 | sed 's/^v//')
    
  3. 安全处理版本对比
    语义化版本号建议用字符串排序对比,避免数值转换的问题:

    # 对比版本,若最新版本大于本地版本则执行更新
    if [ "$(printf '%s\n' "$local_version" "$latest_version" | sort -V | head -n1)" != "$latest_version" ]; then
        # 这里写你的更新逻辑(拉取代码、替换脚本等)
        echo "发现新版本$latest_version,开始更新..."
    fi
    
  4. 增加错误检查
    在curl请求后添加检查,确保返回的是有效JSON:

    release_data=$(curl -s https://api.github.com/repos/Nisamov/autonetplan/releases/latest)
    if ! echo "$release_data" | jq . >/dev/null 2>&1; then
        echo "错误:无法获取或解析GitHub版本信息"
        exit 1
    fi
    latest_version=$(echo "$release_data" | jq -r '.tag_name | ltrimstr("v")')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:53:28