有没有办法将JQ输出到bash脚本的多个变量中? [英] Is there a way to output jq into multiple variables for bash script?

查看:19
本文介绍了有没有办法将JQ输出到bash脚本的多个变量中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上,我有一个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")

注意:我建议使用小写或大小写混合的变量,以避免与许多具有特殊含义的全大写名称意外冲突。此外,<<<是一种虚词,不适用于所有其他的外壳;如果您需要将其移植到例如DASH,请使用类似key=$(printf '%s ' "$apiResult" | jq -r '.key')的代码。

这篇关于有没有办法将JQ输出到bash脚本的多个变量中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆