小编Sug*_*S N的帖子

在 shell 脚本中循环遍历 JSON 数组

下面是 curl 命令输出(关于分支的文件信息),需要脚本或命令来打印文件名、文件类型和大小。

我尝试过jq但能够获取单个值 ( jq '.values[].size')

{
  "path": {
    "components": [],
    "name": "",
    "toString": ""
  },
  "revision": "master",
  "children": {
    "size": 5,
    "limit": 500,
    "isLastPage": true,
    "values": [
      {
        "path": {
          "components": [
            ".gitignore"
          ],
          "parent": "",
          "name": ".gitignore",
          "extension": "gitignore",
          "toString": ".gitignore"
        },
        "contentId": "c9e472ef4e603480cdd85012b01bd5f4eddc86c6",
        "type": "FILE",
        "size": 224
      },
      {
        "path": {
          "components": [
            "Jenkinsfile"
          ],
          "parent": "",
          "name": "Jenkinsfile",
          "toString": "Jenkinsfile"
        },
        "contentId": "e878a88eed6b19b2eb0852c39bfd290151b865a4",
        "type": "FILE",
        "size": 1396
      },
      {
        "path": {
          "components": …
Run Code Online (Sandbox Code Playgroud)

shell scripting json jq

14
推荐指数
3
解决办法
5万
查看次数

如果 jq 中的 else 没有给出预期的输出

如果他们的领域是内部的,我需要显示用户。

输入:

[
  {
    "name": "A_A",
    "uri": "https:test/test",
    "realm": "internal"
  },
  {
    "name": "B_B",
    "uri": "https:test/test",
    "realm": "internal"
  },
  {
    "name": "C_C",
    "uri": "https:test/test",
    "realm": "external"
  }
]
Run Code Online (Sandbox Code Playgroud)

尝试过:

jq 'if .[].realm == "internal" then .[].name else empty end'
Run Code Online (Sandbox Code Playgroud)

但问题是它列出了所有用户。

预期输出:

A_A , B_B
Run Code Online (Sandbox Code Playgroud)

jq

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

jq ×2

json ×1

scripting ×1

shell ×1