0

我需要下载应用程序 JAR 来执行,并且我设法在我的脚本中找到了这一步:

jq '.files[] | select(.uri | contains("RELEASE") and contains(".jar"))'

这给了我一堆看起来像这样的多个块的结果:

{
  other versions
}
{
  "uri": "/2.0.6-RELEASE/app-name-2.0.6-RELEASE.jar",
  "size": 32981192,
  "lastModified": "2020-02-05T14:21:06.728-05:00",
  "folder": false,
  "sha1": "whatever",
  "sha2": "whatever2",
  "mdTimestamps": {
    "properties": "2020-02-05T14:21:13.468-05:00"
  }
}

根据文档,我尝试将其扩展到:

jq '.files[] | select(.uri | contains("RELEASE") and contains(".jar")) | max_by(.lastModified)' 但它返回错误 jq: error (at <stdin>:3284): Cannot index string with string "lastModified"

文档在将所有不同的搜索过滤器组合在一起时含糊不清。我不确定什么是正确的语法,拜托。

我的目标:只检索一个元素,理想情况下只检索 URI 字符串,这样我就可以在我的下一个命令中直接使用它来获取 JAR,而无需进一步处理。

我还尝试了带有后缀的 max_by 的记录语法:| {uri}- 相同的错误。

4

1 回答 1

1

max_by需要一个数组作为输入,因此本着您的尝试精神,您可能希望考虑:

.files
| map( select(.uri | contains("RELEASE")
                     and contains(".jar")))
| max_by(.lastModified)

ps

将来,请遵循 http://stackoverflow.com/help/mcve上的指南

于 2020-02-12T05:36:38.603 回答