bash中的结构解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash中的结构解决方案相关的知识,希望对你有一定的参考价值。

我有一个来自API请求的字符串,看起来像大json每个元素都有2个字段(name,href),在这个操作之后我将这个名字添加到了数组:

str_from_api="$(user_groups_json "limit=100" | jq -r '.items | .[].name')"
readarray -t usergroups_array <<< "$str_from_api"

但我需要在数组usergroups_array中存储2个变量(name和href)。我是指下一个解决方案

阵:

str_from_api=(name:"Test name", href: "Test href")

这个数组将有100条记录。在我需要对每个名称和每个href进行操作之后,这就是我需要访问此结构的每个元素的原因。

我该如何实现呢?

UPDATE

JSON:

{
 "totalCount": 2,
 "items": [
     {
      "name": "test name",
      "active": false,
      "createdFrom": "SAML",
      "_meta": {
        "allow": [
        "DELETE",
        "GET",
        "PUT"
       ],
       "href": "https://href2.com"
  }
},
{
  "name": "test name 2",
  "active": false,
  "createdFrom": "SAML",
  "_meta": {
    "allow": [
      "DELETE",
      "GET",
      "PUT"
    ],
    "href": "https://href1.com"
  }
}
]
答案

这是在Bash循环中获取输出的快速而肮脏的尝试。

user_groups_json "limit=100" |
jq -r '.items | .[] | (._meta.href + " " + .name)' |
while read -r href name; do
    echo "'$name' has href '$href'"
    : do stuff with these variables here
done

你说你想要这些在数组中,但然后解释你希望一次处理一个;所以将整个列表存储在一个只能访问一次的变量中似乎是多余的。

以上是关于bash中的结构解决方案的主要内容,如果未能解决你的问题,请参考以下文章

bash中的结构解决方案

玩转Bash脚本:选择结构之case

bash 中的 $# 结构是啥意思? [复制]

Chrome-Devtools代码片段中的多个JS库

-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory(代码片段

Eclipse 中的通用代码片段或模板