如何用Bash Shell+JQ提取adminLock=1的domains生成关联数组
使用Bash和jq处理JSON生成关联数组
完整处理代码
#!/bin/bash # 读取JSON数据源(可替换为文件读取或API请求) json_data=$(cat domain_data.json) # 通过jq筛选目标条目并生成关联数组元素 array_items=$(echo "$json_data" | jq -r '.[] | select(.adminLock == 1) | "\"\(.domainsID)\"=\"\(.domains)\""') # 构建Bash关联数组 eval "now_array=($array_items)" # (可选)验证数组内容 for id in "${!now_array[@]}"; do echo "DomainsID: $id, Domain: ${now_array[$id]}" done
关键逻辑说明
- jq过滤规则:
.[]遍历JSON数组中的每一个条目select(.adminLock == 1)筛选出adminLock字段值为1的条目"\"\(.domainsID)\"=\"\(.domains)\""将符合条件的条目格式化为Bash关联数组支持的"键"="值"结构
- 关联数组构建:使用
eval将jq输出的元素集合拼接成合法的Bash关联数组定义语句 - 数据源替换:如果JSON来自API接口,可将
cat domain_data.json替换为curl -s "API接口地址"
内容的提问来源于stack exchange,提问作者study
相关产品推荐
相关产品推荐

