如何实现自动升级至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
相关产品推荐
相关产品推荐

