如何解决gcloud命令输出格式设置,以便在另一个gcloud命令中使用结果
我正在尝试自动删除以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,以便可以直接在另一个命令中处理每个结果。
感谢您的宝贵建议
解决方法
@Hitobat非常感谢您的评论
我使用了csv [no-heading]选项,即使尾部-n +2 otion也可以完成
以下命令可以很好地完成工作:
#!/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)
。
根据the docs:
没有标题的
value
CSV,没有
分隔符,而不是 。用过的 检索单个资源值。
因此,它等效于您使用的--format="csv[no-heading](name)
,但是“ 更正确”(并且更清晰)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。