当json在文件中时如何将变量传递给jq?

时间:2017-01-26 07:33:39

标签: environment-variables jq

我试图重新创建this SO question但是将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

我做错了什么?

2 个答案:

答案 0 :(得分:3)

像这样:

# 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"
}

答案 1 :(得分:1)

如果您使用环境变量并将其替换为envsubst,则不需要在此使用jq

export number=3000
envsubst < test.json