如何用jq根据环境变量过滤对象数组并获取首个匹配的tab_id
使用jq从JSON数组中提取首个匹配环境变量的tab_id
需求说明
从包含tab_id和pane_id字段的JSON对象数组中,找到首个pane_id值与指定环境变量匹配的对象,提取其tab_id字段值。
解决命令
假设目标环境变量名为TARGET_PANE,可以用以下纯jq命令实现(无需额外管道工具):
jq --arg target "$TARGET_PANE" 'first(.[] | select(.pane_id == ($target | tonumber))).tab_id' input.json
命令解析
--arg target "$TARGET_PANE":将环境变量TARGET_PANE的内容传入jq,作为字符串变量target使用first(...):仅保留数组中第一个匹配条件的结果,确保只返回首个匹配的tab_id.[]:遍历输入JSON数组中的每一个对象select(.pane_id == ($target | tonumber)):筛选出pane_id等于目标值的对象(因为--arg传入的是字符串类型,用tonumber转换为数字,与JSON中pane_id的数字类型匹配).tab_id:提取匹配对象的tab_id字段值
示例验证
以你提供的JSON数组为例,当环境变量TARGET_PANE=2时,运行命令后会输出:
0
内容的提问来源于stack exchange,提问作者cassepipe
相关产品推荐
相关产品推荐

