我在脚本中使用命令gcloud compute instances list
,但担心确切的输出格式不是静态的。我该怎么办?
最佳答案
您应该使用大多数--format
命令可用的gcloud
标志。
例如,如果您想获得与当前格式(截至撰写本答案时)完全相同的输出,则可以运行:
$ gcloud compute instances list --format="table(
name,
zone.basename(),
machineType.basename(),
scheduling.preemptible.yesno(yes=true, no=''),
networkInterfaces[0].networkIP:label=INTERNAL_IP,
networkInterfaces[0].accessConfigs[0].natIP:label=EXTERNAL_IP,
status
)"
即使命令的默认输出发生了变化,此命令的输出也不会在版本之间更改(除非格式化的资源已更改;这应该很少)。1在命令中显示资源的默认格式尚在进行中。2
您还可以为机器可读的输出指定类似YAML或JSON的格式:
$ gcloud compute instances list --format=yaml
$ gcloud compute instances list --format=json
请注意,此输出包含的信息比此命令的缺省输出中提供的信息多得多。这是构造自定义格式时必须使用的信息。
CSV是另一种格式选项。与
table
一样,它也需要一个投影-有关如何打印每一行的规范。3$ gcloud compute instances list --format="csv(name,zone,status)"
name,zone,status
example-instance,us-central1-f,RUNNING
...
有关
gcloud
格式化功能的更多信息,请参见gcloud topic formats
和gcloud topic projections
的输出。您可以通过运行
gcloud compute instances list --format=flattened
来查看所有可能的字段。对于某些命令,例如
gcloud beta test android locales list
,您可以传递--verbosity=INFO
标志并查找INFO: Display format
。这是因为CSV数据无法像JSON或YAML一样嵌套,并且正在打印的数据结构可能会嵌套。