Json jq:错误:无法使用字符串索引数组
我正在尝试为检查点管理服务器api编写bash脚本,但遇到了一些问题。 我想在json字典中获取值,为此我必须使用变量。我正在输入以下命令: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中有索引号,
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'