我正在使用名为jq的工具解析JSON响应。 jq的输出将在命令行中为我提供一个全名列表。
我有变量 getNames ,其中包含JSON,例如:
{
"count": 49,
"user": [{
"username": "jamesbrown",
"name": "James Brown",
"id": 1
}, {
"username": "matthewthompson",
"name": "Matthew Thompson",
"id": 2
}]
}
我通过JQ传递它以使用以下命令过滤json:
echo $getNames | jq -r .user[].name
这给了我一个这样的列表:
James Brown
Matthew Thompson
我想将这些条目中的每一个放入bash数组中,因此我输入以下命令:
declare -a myArray
myArray=( `echo $getNames | jq -r .user[].name` )
但是,当我尝试使用:
打印数组时printf '%s\n' "${myArray[@]}"
我得到以下内容:
James
Brown
Matthew
Thompson
如何确保在新行之后创建新索引而不是空格?为什么名称被分开?
感谢。
答案 0 :(得分:4)
只需使用IF EXIST
命令将多行读入数组,如下所示:
mapfile
答案 1 :(得分:4)
{
"_id" : ObjectId("569d03b66abefa8be9c49f26"),
"brands" : [
"Brand1"
"Brand2"
"Brand3"
],
"name" : "Family Jewels",
"address" : "",
"housenr" : "",
"postalcode" : "1234 AQ",
"city" : "Amsterdam",
"phone" : "+31 570 - 514200",
"email" : "jewelry@email.nl",
"web" : "http://www.familyjewels.nl/",
"kind" : "horloges",
"country" : "Nederland",
"brandsNetherlands" : [ ]
}
中的一个简单脚本,用于将每行输出反馈到数组bash
。
myArray