gpt4 book ai didi

json - Bash 在另一个变量中存储 json 响应

转载 作者:行者123 更新时间:2023-12-04 00:38:52 27 4
gpt4 key购买 nike

我正在 curl 一个端点:

#!/bin/bash
instance_info=$(curl -sk https://internal.admin.com/app/instance)

这给出了一个json响应:
{
"basePath": "/install",
"metadata": {
"deployed_artifact": "app01",
"docker": "True",
"http_port": "7471",
"url": "www.google.com"
},
"name": "app-01",
"server": "webserver1"
}

我试图避免多次 curl 以使用 JQ 从 json 中获取我需要的变量。

使用 bash 如果有人能告诉我如何将响应存储为另一个 var 然后使用它来变量化名称,我真的很感激:server: url: http_port:

以下似乎运行 curl 两次:
#!/bin/bash
instance_info=$(curl -sk https://internal.admin.com/app/instance)

server_name=$(echo instance_info | /usr/bin/jq --raw-output '.server')
url=$(echo instance_info | /usr/bin/jq --raw-output '.url')

最佳答案

您正在调用 curl一次就够了。然后您将内容保存在变量中,因此您无需调用 curl 即可访问它。再次。

关于您的代码,您的方法很好,但您缺少 $当您回显变量时:

server_name=$(echo $instance_info | /usr/bin/jq --raw-output '.server')
# ^

请参阅示例。在这里,我对 JSON 进行了硬编码:
your_json='
{
"basePath": "/install",
"metadata": {
"deployed_artifact": "app01",
"docker": "True",
"http_port": "7471",
"url": "www.google.com"
},
"name": "app-01",
"server": "webserver1"
}'

server :
$ echo "$your_json" | jq --raw-output '.server'
webserver1

对于 url您需要指出它所在的块。即 metadata :
$ echo "$your_json" | jq --raw-output '.metadata.url'
www.google.com

要存储到变量中,请说:
your_field=$(echo "$your_json" | jq --raw-output 'XXXX')
# ^^^^

关于json - Bash 在另一个变量中存储 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36887134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com