如何在Shell脚本中将JSON文件的键存入数组?
提取JSON顶级键到Shell数组
要把JSON文件的顶级键自动提取并存入Shell数组,最可靠的方式是用jq工具处理JSON,动态获取所有键:
基础实现(键无特殊字符时)
直接通过命令替换将jq输出存入数组,新增的顶级键会被自动识别:
# 假设JSON文件名为employees.json keys=($(jq -r 'keys[]' employees.json))
jq -r 'keys[]':keys函数返回所有顶级键的数组,[]展开数组元素,-r确保输出原始字符串(不带引号)。- 验证数组内容:
echo "所有键:${keys[@]}" # 循环打印每个键 for key in "${keys[@]}"; do echo "- $key" done
健壮实现(键含空格/特殊字符时)
如果JSON键包含空格、引号等特殊字符,用while循环读入更安全,避免分割错误:
keys=() # 用进程替换将jq输出作为循环输入 while IFS= read -r key; do keys+=("$key") done < <(jq -r 'keys[]' employees.json)
IFS=:禁止按空格分割输入行-r:保留输入行中的原始字符,不转义反斜杠
依赖安装
如果系统没有jq,先安装:
- Debian/Ubuntu系:
sudo apt update && sudo apt install jq - RHEL/CentOS系:
sudo dnf install jq
内容的提问来源于stack exchange,提问作者Felipe Tarran
相关产品推荐
相关产品推荐

