如何在bash中使用jq提取JSON中指定ID对应的relatives字段值
问题根因
- jq表达式里写的
.ID是固定匹配键名为ID的字段,不会自动读取你Shell中导出的ID环境变量,jq默认无法直接获取Shell侧的变量值 - 从给出的JSON结构来看,
relatives字段嵌套在connections对象下,之前写的路径缺失了connections层级,匹配不到目标字段
可直接用的修正代码
保持第一行export ID=1不变,只修改第二行命令即可:
export ID=1 curl 'url.json' | jq -r --arg target_id "$ID" '.[$target_id].connections.relatives'
参数说明
--arg target_id "$ID":将Shell中ID变量的值传入jq内部变量target_id,通过.[$target_id]动态匹配对应数字ID的顶层键- 路径补全了
connections层级,完全匹配给出的JSON结构中relatives的嵌套位置 -r参数会直接输出原始文本内容,不会额外包裹JSON格式的双引号
内容的提问来源于stack exchange,提问作者sdrz
相关产品推荐
相关产品推荐

