引用函数与使用引号之间有什么区别?

时间:2019-07-27 14:12:43

标签: kubernetes-helm

我为什么要这样:

args: [{{ Values.somevalue | quote }}]

对此

args: ["{{ Values.somevalue }}"]

我觉得我读过某处的区别,但是我可以在文档中找到有关""所做的任何事情,他们只提到| quote。但是,如果我上面写的两行是等效的,为什么它们首先要麻烦创建quote函数呢?

1 个答案:

答案 0 :(得分:0)

It looks like quote的实际有趣之处在于,它可以任意使用多个参数,对每个参数都加引号,并在每个参数之间留一个空格

{{ $v := "foo" }}
{{ quote $v "bar" "baz" }}
{{/* "foo" "bar" "baz" */}}

如果需要将其包含在扩展管道中,则此函数形式可能会很方便。

{{ list (quote $x) | toJson }}
{{/* ["\"foo\""] */}}

但是否则,它似乎并没有做任何特别的事情,尤其是没有进行任何引号转义。

{{ $x := "foo" -}}
{{/* All produce "foo": */}}
"{{ $x }}"
{{ $x | quote }}
{{ $x | printf "\"%s\"" }}

{{/* Not what you hoped for: */}}
{{ $y := "bar\", \"baz" }}
{{ $y | quote }}
{{/* "bar", "baz" */}}

(FWIW,我几乎总是{{ ... | quote }};但是我想当我开始学习Helm时,我也希望它确实可以转义,但事实并非如此。)