我正在尝试为检查点管理服务器 api 执行 bash 脚本,但遇到了一些问题。我想获取 json 字典中的值,为此我必须使用变量。我正在输入这个命令:
echo $rulebase | jq --arg n "$0" '.rulebase[$n].to'
Run Code Online (Sandbox Code Playgroud)
我得到下一个错误:
jq:错误:无法用字符串索引数组
但是,如果我使用:
echo $rulebase | jq '.rulebase[0].to'
Run Code Online (Sandbox Code Playgroud)
我得到了我需要的结果。我不知道如何在变量为数字时使用它们,有人可以帮助我吗?
您需要将提供给脚本的字符串转换为数字。
echo "$rulebase" | jq --arg n "$1" '.rulebase[$n|tonumber].to'
Run Code Online (Sandbox Code Playgroud)
如果要传入数值,请使用
—-argjson
Run Code Online (Sandbox Code Playgroud)
而不是—-arg,它用于 JSON 字符串值。
如果您的 jq 不支持 —argjson,那么如果可能,现在将是升级的绝佳时机;否则,您可以使用tonumber.