Arrays 从jq请求的值生成数组
我正在尝试用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数组
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
总结
要从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
总结
请尽可能严格遵守指导原则。在这里,一些(可能是简化的)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数组的进程的占位符。