使用 jq 将 json 作为数组读入

Using jq to read in json as an array

我有这个例子test.json文件:

{
    "folder": {
    "name": "Desktop",
    "path": "Users/user/Desktop",
    "executable": false
    }
}

我正在尝试将 'folder' 中包含的对象作为数组读取到变量 $var 中。所需的输出 - $var 包含以下内容:

[
  {
    "name": "Desktop",
    "path": "Users/user/Desktop",
    "executable": false
  }
]

看起来比较简单。 jq '.folder' test.json 读取文件夹值,然后使用 -s 标志通过管道输出以将其包含在数组中。此命令执行得很好:

jq '.folder' test.json | jq -s

但是,当我尝试将结果保存到变量时,它会抛出一个错误,显示 jq 用法语句。我错过了什么?有没有不同的方法来完成这个?

var=$(jq '.folder' test.json | jq -s)
echo $var

我还发现这在 zsh 中工作正常,但在 bash 中抛出错误。不确定这是否相关以及是否与 jq

的不同版本有关

这是您所期待的吗?

$ var="$(jq "[.folder]" test.json)"
$ echo "$var"
[
  {
    "name": "Desktop",
    "path": "Users/user/Desktop",
    "executable": false
  }
]