You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Bash中遍历JSON文件提取字段并循环执行curl命令的需求

我来帮你搞定这个从JSON提取字段并循环执行curl的需求!以下是具体的实现方案:

解决方案:提取JSON字段并批量执行curl命令

核心思路是先通过jq把每个issue对应的三个字段值配对输出,再用循环读取每一组值来执行curl命令,刚好对应你需要的9次执行。

步骤1:提取对齐的字段值

首先用jq将每个issue的keyproject.keycustomfield_10107.id按空格分隔输出,确保三个值一一对应:

jq -r '.issues[] | "\(.key) \(.fields.project.key) \(.fields.customfield_10107.id)"' 1.json

执行后会输出类似这样的内容(对应9条issue数据):

TECH-XXX1 TECH 10400
TECH-XXX2 TECH 10400
...
TECH-XXX9 TECH 10400

步骤2:循环执行curl命令

接下来用while read循环读取每一行的三个值,分别赋值给变量后执行curl。下面是完整的脚本示例(你可以根据实际需求修改curl的请求参数):

#!/bin/bash

# 遍历提取到的每一组字段值,依次执行curl
jq -r '.issues[] | "\(.key) \(.fields.project.key) \(.fields.customfield_10107.id)"' 1.json | while read -r project parent custom_field; do
    echo "正在处理 ${project}..."
    # 替换为你实际需要的curl命令,这里是模板示例
    curl -X POST \
         -H "Content-Type: application/json" \
         -d '{
             "issue_key": "'"${project}"'",
             "parent_project": "'"${parent}"'",
             "custom_field_id": "'"${custom_field}"'"
         }' \
         "https://your-api-endpoint.com/target-path"
done

关键细节说明:

  • jq-r参数确保输出原始字符串,避免转义引号带来的问题;
  • read -r保证读取包含特殊字符的字符串时不会出错;
  • 如果customfield_10107.id可能存在空值,可以添加判断逻辑跳过,比如:if [ -n "$custom_field" ]; then ... fi
  • 把示例中的API地址和请求体替换成你实际需要调用的接口信息。

无脚本直接执行版本

如果你不想保存脚本文件,也可以直接在终端里运行这条整合命令:

jq -r '.issues[] | "\(.key) \(.fields.project.key) \(.fields.customfield_10107.id)"' 1.json | while read -r p pr cf; do curl -X POST -H "Content-Type: application/json" -d '{"issue_key":"'"$p"'","parent_project":"'"$pr"'","custom_field_id":"'"$cf"'"}' "https://your-api-endpoint.com/target-path"; done

这样就能精准执行9次curl,对应每个issue的字段值啦!

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

火山引擎 最新活动