bash - 将 JSON 传递给 bash 脚本
问题描述
我将 JSON 传递给 bash 脚本。JSON 包括固定(已知)键名和来自环境变量的值。
例如:
binary --foo="{\"CYCLE_TIMER_FORCE_MHZ\" : \"$MHZ\"}"
这导致文字调用:
binary --foo={"CYCLE_TIMER_FORCE_MHZ" : "1234"}
如果MHZ
是1234
在环境中。
看看那些丑陋的逃跑。随着这个论点越来越长,它变得越来越烦人。有什么方法可以编写这样的参数,可能包含更多的密钥对,而无需为"
需要出现在文字参数值中的每个密钥对做工作?
解决方案
您可以使用此处的文档:
var=$(cat <<EOF
{"CYCLE_TIMER_FORCE_MHZ" : "$MHZ"}
EOF
)
之后,$var
包含所需的值:
$ echo "$var"
{"CYCLE_TIMER_FORCE_MHZ" : "1234"}
或者你可以使用 jq:
$ jq -nc --arg v "$MHZ" '{"CYCLE_TIMER_FORCE_MHZ" : $v}'
{"CYCLE_TIMER_FORCE_MHZ":"1234"}