26

我在 jsonFile 中有一个 json 存储

{
  "key1": "aaaa bbbbb",
  "key2": "cccc ddddd"
}

我有代码mycode.sh

#!/bin/bash
value=($(jq -r '.key1' jsonFile))
echo "$value"

在我运行./mycode.sh结果之后,aaaa 但如果我只是运行jq -r '.key1' jsonFile结果是aaaa bbbbb

有人可以帮我吗?

4

2 回答 2

34

用那行代码

value=($(jq -r '.key1' jsonFile))

您将两个值都分配给一个数组()注意命令周围的外部括号。因此,您可以单独访问这些值或回显整个数组的内容。

$ echo "${value[@]}"
aaaa bbbb

$ echo "${value[0]}"
aaaa

$ echo "${value[1]}"
bbbb

由于您在$value没有指定要获取哪个值的情况下进行了回显,因此您只能获得数组的第一个值。

于 2014-03-20T09:18:19.603 回答
8
local result=$(<your_json_response>)
local aws_access_key=$(jq -r '.Credentials.AccessKeyId' <<< ${result})
local aws_secret_key=$(jq -r '.Credentials.SecretAccessKey' <<< ${result})
local session_token=$(jq -r '.Credentials.SessionToken' <<< ${result})

上面的代码是另一种从 json 响应中获取值的方法。

于 2020-09-07T08:37:41.033 回答