繁体   English   中英

gcloud 命令 output 格式化以在另一个 gcloud 命令中使用结果

[英]gcloud command output formatting to use results in another gcloud command

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

为此,我使用命令:

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

其中 output 显示的正是这种格式:

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

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

谢谢你的宝贵意见

@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

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

根据文档

value

CSV 没有标题和 <TAB> 分隔符而不是 <COMMA>。 用于检索单个资源值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM