如何比较go模板中的字符串?

How to compare strings in go templates?

我想显示 .metadata.labels.app 设置为 "myapp" 值的条目。

命令:

kubectl get pods -o go-template --template="{{range .items}}{{if eq .metadata.labels.app "myapp"}}{{.metadata.name}} {{end}}{{end}}"

报错:

output:1: function "myapp" not defined

结构如下所示:

- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: 2017-09-15T08:18:26Z
    generateName: myapp-2830765207-
    labels:
      app: myapp
      pod-template-hash: "2830765207"
    name: myapp-2830765207-dh359
    namespace: default

我以前没有使用过 kubetcl,但我对 shell 一般的命令很熟悉,从中我可以告诉你一件事出错了,也许这就是你所需要的。 (我也有点熟悉 Go 模板,你的字符串比较对我来说很好。)通过在你的模板周围和你的模板中使用双引号,你实际上关闭了你作为模板传递的字符串"myapp" 中的第一个双引号。在模板周围使用单引号应该会有所帮助:

kubectl get pods -o go-template --template='{{range .items}}{{if eq .metadata.labels.app "myapp"}}{{.metadata.name}} {{end}}{{end}}'