基本上我有一个 bash 脚本,它在某一时刻进行 API 调用,并生成证书和密钥并以 json 形式返回。我将其通过管道传输到 jq 并可以选择证书或密钥并将其存储在变量中。
像这样的事情:
CERT=$(API call | jq -r '.certificate')
or
KEY=$(API call | jq -r '.key')
我想将每个存储在自己的变量中,但我不能调用两次,因为它将生成一个新的证书/密钥。
我知道我可以将两者存储在一个文件中,然后进行操作来完成我的任务,但我很好奇 jq 是否提供了一种直接方法来有选择地将每个值存储在其自己的变量中?
您可以将原始 JSON 存储在变量(而不是文件)中,然后从中提取密钥和证书:
apiResult=$(API call)
cert=$(jq -r '.certificate' <<<"$apiResult")
key=$(jq -r '.key' <<<"$apiResult")
注意:我建议使用小写或混合大小写的变量,以避免与许多具有特殊含义的全大写名称发生意外冲突。还,<<<
是一种 bashism,不适用于所有其他 shell;如果您需要将其移植到例如破折号,使用类似的东西key=$(printf '%s\n' "$apiResult" | jq -r '.key')
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)