用数字替换 jq 预定义变量

Replace jq predefined variable with number

jq 可以预定义变量并替换为 --arg 选项。它适用于字符串。但是,我不知道如何将变量替换为数字。

$jq -n --arg number 3000 '{"number":$number}'
{
  "number": "3000"
}

我希望能够生成如下内容:

{
  "number": 3000
}

提前致谢。

解决方法如下:

jq -n --argfile number <(printf '%d' 3000) '{"number":$number}'

或者

jq -n --arg number 3000 '{"number":$number|fromjson}'

或者:

jq -n --arg number 300 '{"number": $number|tonumber}'

或(正如 Jeff 指出的那样)使用 jq 1.5:

jq -n --argjson number 300 '{"number": $number}'

或(2015 年 6 月 26 日之后的 jq 版本):

jq -n --arg number 300 '{$number} | .number |= tonumber'