Arrays 从jq请求的值生成数组

Arrays 从jq请求的值生成数组,arrays,bash,scripting,jq,Arrays,Bash,Scripting,Jq,我正在尝试用Jq制作一个数组 我的代码是: all='('$(cat players_temp.json | jq -r '.item1.items[1].firstName, .item1.items[1].lastName')')' 它给出了输出 $ echo $all (Luka Modrić) $ echo $all[1] (Luka Modrić)[1] 如您所见,该数组的工作方式与数组不同。我期待着: $ echo $all[1] Modrić 要从jq输出创建bash数组

我正在尝试用Jq制作一个数组

我的代码是:

all='('$(cat players_temp.json | jq -r  '.item1.items[1].firstName, .item1.items[1].lastName')')'
它给出了输出

$ echo $all
(Luka Modrić)

$ echo $all[1]
(Luka Modrić)[1]
如您所见,该数组的工作方式与数组不同。我期待着:

$ echo $all[1]
Modrić

要从jq输出创建bash数组,请参见以下SO页面:

了解为什么你的方法失败了,考虑一下与BASH shell会话的转录本:

$ all='('"Luka Modrić"')'
$ echo $all
(Luka Modrić)

$ echo $all[1]
(Luka Modrić)[1]
这本质上表明你的问题与jq毫无关系

如果希望
$all
是由两个字符串“Luka”和“Modrić”组成的数组,则可以编写:

$ all=("Luca" "Modrić")
echo ${all[1]}
Modrić
$ echo ${all[0]}
Luca
请注意数组的正确bash语法,并且索引原点为0

总结
  • 请参阅上面提到的SO页面,了解从jq输出创建bash数组的其他方法

  • 从字符串集合创建bash数组的语法可以总结为:

    ary=(v0…)

  • 如果ary是bash数组,${ary[i]}是第i个元素,其中i的范围从0到${ary[@]}-1


  • 要从jq输出创建bash数组,请参见以下SO页面:

    了解为什么你的方法失败了,考虑一下与BASH shell会话的转录本:

    $ all='('"Luka Modrić"')'
    $ echo $all
    (Luka Modrić)
    
    $ echo $all[1]
    (Luka Modrić)[1]
    
    这本质上表明你的问题与jq毫无关系

    如果希望
    $all
    是由两个字符串“Luka”和“Modrić”组成的数组,则可以编写:

    $ all=("Luca" "Modrić")
    echo ${all[1]}
    Modrić
    $ echo ${all[0]}
    Luca
    
    请注意数组的正确bash语法,并且索引原点为0

    总结
  • 请参阅上面提到的SO页面,了解从jq输出创建bash数组的其他方法

  • 从字符串集合创建bash数组的语法可以总结为:

    ary=(v0…)

  • 如果ary是bash数组,${ary[i]}是第i个元素,其中i的范围从0到${ary[@]}-1


  • 请尽可能严格遵守指导原则。在这里,一些(可能是简化的)players_temp.json版本可能会有所帮助。虽然我不知道您的变量实际上是什么样子,但请注意,Bash中的数组元素访问看起来像
    ${all[1]}
    ,而不是
    $all[1]
    。请尽可能地遵循这些准则。在这里,一些(可能是简化的)players_temp.json版本会有所帮助。虽然我不知道您的变量实际上是什么样子,但请注意,Bash中的数组元素访问看起来像
    ${all[1]}
    ,而不是
    $all[1]
    。谢谢!我尝试使用您提供的链接中提到的函数get_json_array。不幸的是,我收到错误“找不到命令”。我错过了什么吗?@Muq-显然是这样。它只是一个产生JSON数组的进程的占位符。谢谢!我尝试使用您提供的链接中提到的函数get_json_array。不幸的是,我收到错误“找不到命令”。我错过了什么吗?@Muq-显然是这样。它只是生成JSON数组的进程的占位符。