Json jq:错误:无法使用字符串索引数组

Json jq:错误:无法使用字符串索引数组,json,jq,Json,Jq,我正在尝试为检查点管理服务器api编写bash脚本,但遇到了一些问题。 我想在json字典中获取值,为此我必须使用变量。我正在输入以下命令: echo $rulebase | jq --arg n "$0" '.rulebase[$n].to' 我得到了下一个错误: jq:错误:无法使用字符串索引数组 但是,如果我使用: echo $rulebase | jq '.rulebase[0].to' 我得到了我需要的结果。当变量是数字时,我不知道如何使用,有人能帮我吗?如果您在$0中有索引号,

我正在尝试为检查点管理服务器api编写bash脚本,但遇到了一些问题。 我想在json字典中获取值,为此我必须使用变量。我正在输入以下命令:

echo $rulebase | jq --arg n "$0" '.rulebase[$n].to'
我得到了下一个错误:

jq:错误:无法使用字符串索引数组

但是,如果我使用:

echo $rulebase | jq  '.rulebase[0].to'

我得到了我需要的结果。当变量是数字时,我不知道如何使用,有人能帮我吗?

如果您在
$0
中有索引号,只需让shell使用适当的引号插入即可:

echo $rulebase | jq ".rulebase[$0].to"

(这很奇怪,在
$0
中有一个数字,通常是程序名)。

您需要将数字作为JSON参数传递。这里

echo "$rulebase" | jq --argjson n "$my_variable" '.rulebase[$n].to'

如果要传入数值,请使用

—-argjson
而不是用于JSON字符串值的
--arg


如果您的jq不支持-argjson,那么如果可能的话,现在是升级的最佳时机;否则,您可以使用
tonumber

将您提供给脚本的字符串转换为数字

请遵循指导原则。什么是
$rulebase
$0的值是多少?
echo "$rulebase" | jq --arg n "$1" '.rulebase[$n|tonumber].to'