在Jenkins Execute Shell中提取JSON变量中的ID值
在Jenkins Execute Shell中提取JSON里的ID值
嘿,在Jenkins的Execute Shell里处理JSON提取ID,用jq工具绝对是最顺手的方案!下面给你两种实用的实现方式,按需选就行:
方法一:把所有ID提取到数组中
先假设你的JSON数据已经存在变量COMPONENTS_JSON里了(如果还没定义,先按下面的方式赋值):
COMPONENTS_JSON='[ { "id": "1636ea48-28b7-783a-48dd-5e041f10d9e6", "name": "Test_Component1", "desiredVersions": [], "children": false }, { "id": "1636f939-136f-4609-ab93-238b1af193fe", "name": "Test_Component2", "desiredVersions": [], "children": false } ]'
然后用jq提取所有ID并存入数组:
# 提取所有ID到数组(-r参数是输出原始字符串,不带引号) IDS=($(echo "$COMPONENTS_JSON" | jq -r '.[] | .id')) # 之后就能通过数组索引访问两个ID啦 echo "第一个组件ID: ${IDS[0]}" echo "第二个组件ID: ${IDS[1]}"
方法二:分别提取到单独变量
如果只需要单独拿两个ID,直接指定索引提取更直接:
# 提取第一个ID ID1=$(echo "$COMPONENTS_JSON" | jq -r '.[0].id') # 提取第二个ID ID2=$(echo "$COMPONENTS_JSON" | jq -r '.[1].id') # 验证一下结果 echo "Test_Component1的ID: $ID1" echo "Test_Component2的ID: $ID2"
注意事项
要确保你的Jenkins构建节点上已经安装了jq工具,如果没装的话,可以在Execute Shell开头加一行安装命令:
- Debian/Ubuntu系节点:
apt-get update && apt-get install -y jq - RHEL/CentOS系节点:
yum install -y jq
内容的提问来源于stack exchange,提问作者knowdotnet
相关产品推荐
相关产品推荐

