首页 > 解决方案 > 如何将变量传递给jq

问题描述

我在将变量传递给 jq 时遇到问题。这是示例文件:

[
  {
    "version": 24,
    "file": "branding/24"
  }
]

这是我的脚本:

jq --arg value "25" '. += [{"version": $value|tonumber, "file": "branding/$value|tonumber"}]' versions.json >tmp.json && mv tmp.json versions.json

结果是:

[
  {
    "version": 24,
    "file": "branding/24"
  },
  {
    "version": 25,
    "file": "branding/$value|tonumber"
  }
]

预期结果:

[
  {
    "version": 24,
    "file": "branding/24"
  },
  {
    "version": 25,
    "file": "branding/25"
  }
]

标签: jsonbashvariablesinterpolationjq

解决方案


您需要使用插值来评估过滤器。

{"version": $value|tonumber, "file": "branding/\($value|tonumber)"}

推荐阅读