【问题标题】:gcloud command output formatting to use results in another gcloud commandgcloud 命令输出格式以在另一个 gcloud 命令中使用结果
【发布时间】:2020-10-09 19:51:08
【问题描述】:

我正在尝试自动删除 GCP 项目中以特定文本模式结尾的 SSL 证书。

为此,我使用命令:

 gcloud compute ssl-certificates list --filter="name~'819$'" --format="(name)"

哪个输出正好显示这种格式:

NAME
certname1-1602160819
certname2-1602160819
certname3-1602160819
...and so on

问题是,如果我想使用此命令的结果然后使用它输入另一个删除每个证书的gcloud 命令,我将第一个变量作为 NAME,它是字段标题,显然不是证书.

这是我的脚本:

#!/bin/bash
for oldcert in $( gcloud compute ssl-certificates list --filter="name~'819$'" --format="(NAME)")
do
    gcloud compute ssl-certificates delete $oldcert
done

您知道如何从输出中获取字段名称 NAME,以便我可以直接在另一个命令中处理每个结果。

感谢您的宝贵建议

【问题讨论】:

  • 你可以使用tail。例如for oldcert in $(gcloud ... list | tail -n +2)
  • 似乎也有无标题格式说明符,例如csv[no-heading](name)

标签: google-cloud-platform gcloud


【解决方案1】:

@Hitobat 非常感谢您的评论

我使用了 csv[no-heading] 选项,即使 tails -n +2 选项也可以完成这项工作

以下命令做得很好:

#!/bin/bash
for oldcert in $( gcloud compute ssl-certificates list --filter="name~'819$'" --format="csv[no-heading](name)")
do
    gcloud compute ssl-certificates delete $oldcert --quiet
done

【讨论】:

    【解决方案2】:

    正确的格式是--format=value[](name)

    根据the docs

    value

    CSV 没有标题和 分隔符,而不是 。用过的 检索单个资源值。

    所以它等同于您使用的--format="csv[no-heading](name),但“更正确”(并且更易读)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多