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

如何实现自动升级至GitHub最新软件版本?go-ipfs脚本报错排查

go-ipfs 自动升级脚本修复方案

原脚本存在的问题

  • 语法错误1:if test -f /home/ipfs/go-ipfs.tar.gz then 缺少分隔符,then前需要添加分号,或者将then单独放一行
  • 语法错误2:if [$newsize -ne $cursize]; 中括号前后缺少空格,shell会将[$newsize识别为不存在的命令导致报错
  • 文件名拼写错误:解压时的目标文件写为go-ipfs.tar.g,少了末尾的z,导致无法找到压缩包
  • 鲁棒性问题:执行rm go-ipfs.tar.gz时如果文件不存在会抛出非必要报错,可添加-f参数忽略不存在的文件
  • 路径风险:解压操作未指定目标路径,若脚本执行的工作目录异常,会导致后续找不到go-ipfs文件夹

修复后完整脚本

#!/bin/bash
# 清理旧文件
rm /home/ipfs/go-ipfs -rf
rm -f go-ipfs.tar.gz
# 拉取最新版本下载地址并下载
curl -s https://api.github.com/repos/ipfs/go-ipfs/releases/latest | grep linux-amd64.tar.gz\" | grep download  | sed 's/.*: \"//g' | sed 's/\"//g' | wget -i - -O /home/ipfs/go-ipfs.tar.gz
# 判断压缩包是否下载成功
if test -f /home/ipfs/go-ipfs.tar.gz; then
        tar -xf /home/ipfs/go-ipfs.tar.gz -C /home/ipfs/
        newsize=$(wc -c <"/home/ipfs/go-ipfs/ipfs")
        cursize=$(wc -c <"/home/ipfs/ipfs")
        # 比对文件大小判断是否为新版本
        if [ $newsize -ne $cursize ]; then
                mv /home/ipfs/go-ipfs/ipfs /home/ipfs/ipfs
                chmod +x /home/ipfs/ipfs
                pkill ipfs
                # 若需要自动重启ipfs可在此处添加对应的启动命令
        fi
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:21:02