首页 > 解决方案 > 如何用空行开始块标量?

问题描述

当我尝试在 YAML 中使用空行开始块标量时,它会在到达与空行具有相同缩进的下一行时抱怨,“语法错误:预期 <block end>,但发现 '<scalar> '"(但奇怪的是,不是关于进一步缩进的行)。我在这里想念什么?

投诉(关于done):

            - |

                 export $e
              done

作品:

            - |
              #   
                  export $e
              done

我尝试将空格从第一行中删除,在第一行添加 4 个额外空格(使其与 对齐export),并添加 4 个额外空格并包括缩进指示符 ( - |4),但均无济于事。

背景故事

这是针对 AWS CloudFormation 模板的,前一行是 !Join 的一部分,我需要在 .Join 之前添加一个换行符export $e。如果有其他方法可以解决这个问题,而不是将空白行放在块标量的开头,那也很好,但我仍然很好奇。

标签: yaml

解决方案


您应该使用块缩进指示器来明确指示数据缩进了多少。在您的情况下,此缩进为两 (2):行的开头done相对于项目指示符 ( -) 所在的列。

        - |2

             export $e
          done

通常,解析器根据文字(或折叠)标量的第一行上的第一个非空格计算缩进,如果这一行比其他行有更多的空格,或者根本没有非空格文本,你需要“帮助”带有块缩进指示器的解析器。


推荐阅读