能否仅用wget(无需curl)从JSON请求下载文件?含just二进制场景
仅用wget下载最新just二进制文件的方法
问题描述
我尝试下载最新的just二进制文件,目前可通过以下bash命令实现:
wget -q $(curl -s https://api.github.com/repos/casey/just/releases/latest | python -c 'import json,sys;print(json.load(sys.stdin)["assets"][-1]["browser_download_url"])')该命令可正常运行,但我同时使用了curl和wget,感觉不太妥当。请问是否有办法仅用wget完成此操作?
解决方案
当然可以,只需要让wget承担原本curl的API请求工作,结合Python解析JSON即可,全程无需curl。具体命令如下:
wget -q -O - https://api.github.com/repos/casey/just/releases/latest | python -c 'import json,sys;print(json.load(sys.stdin)["assets"][-1]["browser_download_url"])' | wget -q -i -
命令逻辑说明
- 第一个
wget -q -O -:以静默模式请求GitHub最新发布API,并将响应内容输出到标准输出,替代curl的角色 - Python脚本:从标准输入读取API返回的JSON数据,提取出目标二进制文件的下载链接
- 最后
wget -q -i -:让wget从标准输入读取下载链接,完成文件下载
进阶:精准匹配架构文件
如果assets[-1]对应的不是你需要的架构版本,可以添加过滤逻辑,比如筛选x86_64 Linux平台的二进制文件:
wget -q -O - https://api.github.com/repos/casey/just/releases/latest | python -c ' import json, sys for asset in json.load(sys.stdin)["assets"]: if "x86_64-unknown-linux-gnu" in asset["name"]: print(asset["browser_download_url"]) break ' | wget -q -i -
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

