生成包含在列表中命名的 shell 变量的 JSON 映射

Ada*_*dam 2 bash shell environment-variables jq

我的 shell-fu 处于初级以下水平。我有一个文件,其中包含一些恰好是环境变量名称的行。

例如

ENV_VAR_A
ENV_VAR_B
...
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用此文件生成一个 JSON 字符串,其中包含使用 jq 的命名变量的名称和当前值,如下所示:

jq -n --arg arg1 "$ENV_VAR_A" --arg arg2 "$ENV_VAR_B" '{ENV_VAR_A:$arg1,ENV_VAR_B:$arg2}'

# if ENV_VAR_A=one and ENV_VAR_B=two then the preceding command would output 
# {"ENV_VAR_A":"one","ENV_VAR_B":"two"}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过 shell 脚本创建 jq 命令,但我不知道我在做什么:(

pea*_*eak 5

简短而甜蜜(如果您有 jq 1.5 或更高版本):

 jq -Rn '[inputs | {(.): env[.]}] | add' tmp.txt
Run Code Online (Sandbox Code Playgroud)