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

如何将cURL GET请求响应中的DigitalOcean Droplet ID提取并保存为Bash变量?

如何通过DigitalOcean API提取第一个Droplet ID到Bash变量

直接用文本处理工具(比如grep/sed)解析JSON很容易踩坑——你看你的API响应里除了目标Droplet的id,还有image对象里的id字段,grep "id":会把这些都匹配出来,导致变量里拿到一堆混乱内容,而不是你要的第一个Droplet的id。

最可靠的方案是用专门的JSON处理工具jq,它能精准定位JSON结构中的字段,完全避免文本解析的不确定性。

步骤1:安装jq

如果你的系统还没安装jq,可以根据系统类型执行对应命令:

  • Ubuntu/Debian:
    sudo apt update && sudo apt install jq -y
    
  • CentOS/RHEL:
    sudo yum install jq -y
    
  • macOS(依赖Homebrew):
    brew install jq
    

步骤2:修改命令提取目标ID

把你原来的curl命令替换成下面的版本,用jq精准提取第一个Droplet的id:

DROPLETID=$(curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  "https://api.digitalocean.com/v2/droplets?tag_name=$TAG" | jq -r '.droplets[0].id')

这里的jq参数说明:

  • -r:输出原始字符串(去掉JSON自带的引号)
  • .droplets[0].id:精准定位到响应中droplets数组的第一个元素(索引为0),提取它的id字段

验证效果

执行完命令后,运行:

echo $DROPLETID

就能得到你期望的012345678了。

原方法失败的原因

你的原命令用grep "id":会匹配所有包含"id":的内容,包括image对象里的"id":01234567,导致sed处理后得到多个id值混杂的结果。用jq处理JSON是行业通用的可靠方案,就算API响应结构后续有小变化,只要核心层级不变,提取逻辑依然有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:23:10