因此,我试图用YAML编写一个插件配置文件,但是我的解析器抛出了错误,尽管所有的内容似乎都是正确格式化的。YAML网站没有多大帮助,我在docs.ansible.com/ansible/YAMLSyntax.html上找到了任何类型的教程。由于我可能因为普遍缺乏YAML语法知识而忽略了语法中一些愚蠢的东西,那么每个YAML特殊字符都做些什么呢?
作为参考,以下是我的行为不端的YAML文件:
EnforcedWorlds:|
- World
- Nether
- DIM-1
- End
- DIM1
Ignore List:|
- CuckooClock5000
- Venomous Potato
- Subtle Snail
Radius: 10
DisallowInRadius:|
- Sandstone => "Darude Sandstone!"
- Quarry (1040) => "This block is too L33T 4U 2 Use here :)"
- Minium Stone (20102 with datavalues 1 to 1520) => "Minimum Minium area!"
Command Output groups:
Mod:|
- Perm Node: gpu.mod
- (Light Green) $(Banner)
- (Teal) Command A
- (Pink) Command B
Admin:|
- Perm Node: gpu.admin
- (Light Red) $(Banner)
- Mod lines 2-3
- (Blue) Command C
- (Bold)
Owner:|
- Mod lines 1-3
- Admin line 2发布于 2016-05-04 08:55:37
YAML语法无效不是因为字符,而是因为缺少空格:
EnforcedWorlds:|整条线是一个字符串。您希望它是一个映射键(EnforcedWorlds),然后是块标量(|)的头。要使此操作正常,必须在冒号后面添加一个空格:
EnforcedWorlds: |但我不确定这是不是你想要的。它将将以下所有缩进行解析为文字字符串(保留换行符)。但是内容看起来像一个YAML序列,所以您可能想这样写它:
EnforcedWorlds:
- World
- Nether
- DIM-1
- End
- DIM1在这里,该值将被解析为标量项的序列。
要查看您的输入是如何解析的,可以使用一些web服务:
还有ysh,一个用于测试的交互式YAML shell,使用Perl。
发布于 2016-05-03 22:51:04
YAML不需要引用大多数字符串,但是如果特殊字符属于特定的字符列表,则需要引用它们。如果您的值包含以下任何特殊字符:{、}、[、]、&、*、#、?、|、-、<、>、=、!、%、@、:也d17和,
https://stackoverflow.com/questions/37015652
复制相似问题