$ n="foo"; echo "{}" | jq --arg n "$n" '. += { "$n": $n }'
{
"$n": "foo"
}
我读了https://jqlang.github.io/jq/manual/#types-and-values后发现,这应该可行 —— 但显然不行。这是怎么回事?
$ n="foo"; echo "{}" | jq --arg n "$n" '. += { "$n": $n }'
{
"$n": "foo"
}
我读了https://jqlang.github.io/jq/manual/#types-and-values后发现,这应该可行 —— 但显然不行。这是怎么回事?
您可以通过用
$n
括号括起来来告诉 jq 评估表达式来实现这一点:或者可能更适合这个任务的是 jo(1):
我不确定文档是否有误或者我的理解能力是否不够高,但它似乎表明您的示例应该有效:
并且可能有人认为这是指 jq 本机变量而不是 shell 注入的变量,因为它们略有不同,但遗憾的是两者都需要用括号括起来: