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

如何以最简洁方式从单层JSON提取多属性并赋值给Bash变量

提取JSON顶层属性到Bash变量的简洁方案

针对提取JSON顶层属性到Bash变量时,sed/tr处理无法兼容含空格的值、多次调用jq不够高效的问题,推荐用jq一次性生成Bash赋值语句,再通过eval执行的方案,既能处理特殊字符,又只调用一次jq,完全适配50个顶层属性的场景。

具体实现

假设待处理的JSON内容如下:

{
  "a": 1,
  "b": "x y"
}
  1. 把JSON内容存入变量(或读取自文件):
json='{
  "a": 1,
  "b": "x y"
}'
  1. 用jq生成并执行赋值语句:
eval "$(jq -r '@sh "a=\(.a) b=\(.b)"' <<< "$json")"

关键说明

  • @sh是jq的内置过滤器,会自动对字符串值做转义处理,确保空格、引号等特殊字符能被Bash正确解析;
  • 一次性列出所有需要提取的属性(比如50个就写成"var1=\(.var1) var2=\(.var2) ... var50=\(.var50)"),仅调用一次jq,效率极高;
  • 执行后直接通过变量名访问对应值,比如:
echo "a的值:$a"  # 输出 a的值:1
echo "b的值:$b"  # 输出 b的值:x y

注意事项

如果JSON来源不可信,需谨慎使用eval,避免命令注入风险;若为可信数据源,该方案是当前最简洁高效的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:47:17