yaml - 如何用空行开始块标量?
问题描述
当我尝试在 YAML 中使用空行开始块标量时,它会在到达与空行具有相同缩进的下一行时抱怨,“语法错误:预期 <block end>,但发现 '<scalar> '"(但奇怪的是,不是关于进一步缩进的行)。我在这里想念什么?
投诉(关于done
):
- |
export $e
done
作品:
- |
#
export $e
done
我尝试将空格从第一行中删除,在第一行添加 4 个额外空格(使其与 对齐export
),并添加 4 个额外空格并包括缩进指示符 ( - |4
),但均无济于事。
背景故事
这是针对 AWS CloudFormation 模板的,前一行是 !Join 的一部分,我需要在 .Join 之前添加一个换行符export $e
。如果有其他方法可以解决这个问题,而不是将空白行放在块标量的开头,那也很好,但我仍然很好奇。
解决方案
您应该使用块缩进指示器来明确指示数据缩进了多少。在您的情况下,此缩进为两 (2):行的开头done
相对于项目指示符 ( -
) 所在的列。
- |2
export $e
done
通常,解析器根据文字(或折叠)标量的第一行上的第一个非空格计算缩进,如果这一行比其他行有更多的空格,或者根本没有非空格文本,你需要“帮助”带有块缩进指示器的解析器。
推荐阅读
- node.js - 如何查询 DynamoDB 中每一列的计数
- node.js - 如何在 Object.prototype 中使用 typeof
- python - 如何在numpy中将int值更改/重新映射到str
- r - 如何在 5 个月的窗口中使用 rollapply?
- c++ - 如何使用拖放功能和点击信号功能 QT 创建标签
- c# - 是否有一个好的软件模式来处理我想要一个抽象出内部类脆弱生命周期的外部包装类的情况?
- javascript - 如何计算由于实时数据而在 JavaScript 中发生变化的变量的总和?
- r - 使用函数扩展但得到不同的答案
- typescript - 如何在 vue-class 中为 v-model 使用计算属性?
- android - Android如何每25毫秒运行一次线程?