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

use*_*187 17 bash json jq

我在jsonFile有一个json商店

{
  "key1": "aaaa bbbbb",
  "key2": "cccc ddddd"
}
Run Code Online (Sandbox Code Playgroud)

我有代码mycode.sh:

#!/bin/bash
value=($(jq -r '.key1' jsonFile))
echo "$value"
Run Code Online (Sandbox Code Playgroud)

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

谁能帮助我?

Sau*_*ier 21

有了这行代码

value=($(jq -r '.key1' jsonFile))
Run Code Online (Sandbox Code Playgroud)

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

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

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

$ echo "${value[1]}"
bbbb
Run Code Online (Sandbox Code Playgroud)

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


小智 10

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})
Run Code Online (Sandbox Code Playgroud)

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