json 在文件中时如何将变量传递给 jq?
How to pass a variable to jq when the json is in a file?
我正在尝试重新创建 ,但将 json 存储在文件中,而不是在命令行上传递字符串。这是我正在做的事情:
$ cat test.json
{"number":$number}
$ jq --arg number 3000 test.json
jq: error: test/0 is not defined at <top-level>, line 1:
test.json
jq: 1 compile error
我做错了什么?
如果您使用环境变量并用 envsubst
替换它们,则无需在此处使用 jq
,如下所示:
export number=3000
envsubst < test.json
像这样:
# That's not json, it's a .jq file
cat test.jq
{"number":$number}
jq -n --arg number 3000 -f test.jq
{
"number": "3000"
}
顺便说一句,上面的例子给你 "3000"
作为一个 字符串 。如果你想让它成为一个数字,你需要使用 --argjson
:
jq -n --argjson number 3000 -f test.jq
{
"number": 3000
}
或作为字符串
jq -n --argjson number '"3000"' -f test.jq
{
"number": "3000"
}
我正在尝试重新创建
$ cat test.json
{"number":$number}
$ jq --arg number 3000 test.json
jq: error: test/0 is not defined at <top-level>, line 1:
test.json
jq: 1 compile error
我做错了什么?
如果您使用环境变量并用 envsubst
替换它们,则无需在此处使用 jq
,如下所示:
export number=3000
envsubst < test.json
像这样:
# That's not json, it's a .jq file
cat test.jq
{"number":$number}
jq -n --arg number 3000 -f test.jq
{
"number": "3000"
}
顺便说一句,上面的例子给你 "3000"
作为一个 字符串 。如果你想让它成为一个数字,你需要使用 --argjson
:
jq -n --argjson number 3000 -f test.jq
{
"number": 3000
}
或作为字符串
jq -n --argjson number '"3000"' -f test.jq
{
"number": "3000"
}