15

我遇到了两种从 kubernetes 中的文件创建配置映射的语法。

第一个


apiVersion: v1
data:
  file1.yaml: |+
    parameter1=value1
kind: ConfigMap
metadata:
  name: my-configmap

第二个

apiVersion: v1
data:
  file1.yaml: | -
    parameter1=value1
kind: ConfigMap
metadata:
  name: my-configmap

|+ 和 |- 有什么区别?

4

2 回答 2

28

这是块咀嚼指标

直接引用链接:

chomping 指示器控制字符串末尾的换行符应该发生什么。默认情况下,clip 在字符串末尾放置一个换行符。要删除所有换行符,请通过在样式指示符后添加减号 (-) 来去除它们。clip 和 strip 都忽略块末尾实际有多少换行符;为了让它们都在样式指示符后加上一个加号 (+)。

这意味着:

apiVersion: v1
data:
  file1.yaml: |-
    parameter1=value1


kind: ConfigMap
metadata:
  name: my-configmap

file1.yaml 将具有以下值:

parameter1=value1

为了:

apiVersion: v1
data:
  file1.yaml: |+
    parameter1=value1


kind: ConfigMap
metadata:
  name: my-configmap

file1.yaml 将具有以下值:

parameter1=value1 # line break
# line break
# line break
于 2019-05-31T13:37:38.793 回答
1

这些是块咀嚼指示符,它们影响如何处理文字 ( ) 或折叠 ( ) 块样式标量中的尾随换行符。|>

默认情况下,如果在(or )之后没有+or ,则那些尾随换行符将被剪裁,即标量将被加载为以单个换行符结尾的字符串,而与标量末尾是否有多个空行无关。-|>

如果+指定,则保留每个换行符,因此标​​量将在下一个节点的缩进之前的每个空行都有一个额外的换行符(除了结束最后一个非空行的那个)

如果-指定,标量将被剥离并且不会以换行符结尾,即使块样式标量的末尾有多个空行。

请注意,您的第二个示例无效生产规则表明,chomping 指示符只能通过缩进指示符(即数字,如果指定)与 分隔,并且 和|之间不允许有空格。|-

于 2019-05-31T14:41:34.990 回答