gpt4 book ai didi

arrays - Bash - 仅在出现新行而不是空格时进入下一个索引?

转载 作者:行者123 更新时间:2023-11-29 09:18:58 25 4
gpt4 key购买 nike

我正在使用名为 jq 的工具解析 JSON 响应。jq 的输出将在我的命令行中提供全名列表。

我有包含 JSON 的变量 getNames,例如:

{
"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

如何确保在新行而不是空格之后创建新索引?为什么名称要分开?

谢谢。

最佳答案

bash 中的一个简单脚本,用于将输出的每一行输入数组 myArray

#!/bin/bash

myArray=()
while IFS= read -r line; do
[[ $line ]] || break # break if line is empty
myArray+=("$line")
done < <(jq -r .user[].name <<< "$getNames")

# To print the array
printf '%s\n' "${myArray[@]}"

关于arrays - Bash - 仅在出现新行而不是空格时进入下一个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com