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

如何使用jq从含动态键的JSON生成export环境变量命令?

动态生成环境变量导出命令的解决方案

针对你提供的JSON结构(数组中每个对象包含以_GROUP_NAME和_VERSION结尾的动态键),可以用jq工具快速生成对应的export命令,以下是具体实现:

核心命令

假设你的JSON内容保存在input.json文件中,执行以下命令:

jq -r '.[] | to_entries[] | "export \(.key)=\(if .value | type == "string" then "\'\''\(.value | gsub("\'\'"; "\\\'''\''))'\''" else .value end)"' input.json

命令解释

  1. .[]:遍历JSON数组中的每一个对象
  2. to_entries[]:将每个对象转换为键值对数组(每个元素格式为{"key": "键名", "value": "对应值"})
  3. 拼接export语句:
    • 对字符串类型的值自动添加单引号包裹,同时转义值内部的单引号(避免shell语法错误)
    • 数字类型的值直接输出,不需要引号

示例输出

用你提供的JSON输入执行命令后,会输出:

export PREPROCESS_GROUP_NAME='preprocess-group-name'
export PREPROCESS_VERSION=2
export CLASSIFIER_GROUP_NAME='classifier-group-name'
export CLASSIFIER_VERSION=2
export ABC_GROUP_NAME='abc-group-name'
export ABC_VERSION=2

直接生效到当前shell

如果希望生成的环境变量直接在当前shell会话中生效,可以用eval执行命令输出:

eval "$(jq -r '.[] | to_entries[] | "export \(.key)=\(if .value | type == "string" then "\'\''\(.value | gsub("\'\'"; "\\\'''\''))'\''" else .value end)"' input.json)"

注意事项

  • 确保系统已安装jq工具(大部分Linux发行版可通过包管理器安装,比如apt install jq或yum install jq)
  • 如果JSON中的字符串包含特殊字符(如单引号),上述命令已做转义处理,避免shell解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:21:36