从json获取字段并在bash脚本中分配给变量?

时间:2014-03-20 09:08:52

标签: json bash jq

我在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

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:18)

使用该行代码

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

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

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

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

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

由于您回显$value而未指定要获取的值,因此只能获取数组的第一个值。

答案 1 :(得分:3)

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响应中获取值的另一种方法。