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

如何用jq提取configMapRef的name值并存入Bash数组

解决方案

1. 修正jq命令提取configMapRef的name值

你当前的jq命令已经筛选出包含configMapRef的对象,只需追加.configMapRef.name即可直接提取name属性,同时加上-r参数输出原始字符串(不带JSON引号),方便后续Bash处理:

jq -r '.spec.template.spec.containers[].envFrom[] | select(.configMapRef) | .configMapRef.name' file.json

2. 将提取结果存入Bash数组

使用Bash的mapfile命令(别名readarray)可以将命令输出的每一行直接存入数组,避免空格或特殊字符导致的拆分问题:

# 提取并存入数组
mapfile -t config_map_names < <(jq -r '.spec.template.spec.containers[].envFrom[] | select(.configMapRef) | .configMapRef.name' file.json)

3. 遍历数组使用

存入数组后,可通过循环遍历每个name值:

for name in "${config_map_names[@]}"; do
    echo "处理ConfigMap: $name"
    # 这里添加自定义业务逻辑,例如 kubectl get configmap "$name"
done

兼容低版本Bash的替代方案

如果你的Bash版本低于4.0(不支持mapfile),可以用传统的while循环替代:

config_map_names=()
while IFS= read -r name; do
    config_map_names+=("$name")
done < <(jq -r '.spec.template.spec.containers[].envFrom[] | select(.configMapRef) | .configMapRef.name' file.json)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:27