yaml语法
背景
在看gitlab-ci时,官方文档多次提及锚点,
发现对yaml的用法没有注意太多,
于是补充一些知识.
介绍
是 YAML Ain’t Markup Language的嵌套简称,
一开始用缩进表达关系.
尽管目前加入了不少新奇的写法,
不过个人认为限于缩进表意的方式,发展出来的有可能还是借助标记来实现功能.
语法等
基本语法
- 大小写敏感
- 使用缩进表示层级关系
- 不允许使用TAB,只允许使用空格
- 一般来说只要下一级对齐即可,不限制有多少个空格
- 使用#表示注释
数据结构
- 单纯的数据
- 字符串
- 默认不需要引号,如果字符串中想包含冒号等妨碍解析的字符则需要引号
- 使用时不区分是单引号还是双引号
- true和false
- 数字(整数和浮点书)
- ~用来表示NULL
- 时间(使用ISO8601格式,2001-12-14t21:59:43.10-05:00 )
- 日期(yyyy-mm-dd格式)
- 字符串
- 对象(使用冒号的键值对)
- 数组
- 写成一行是 [a, b]
- 写成多行则与markdown相同
奇技淫巧
多行字符串
第二行空一个空格写,认为是同一行
1 | str: 一段 |
使用 >
和默认的行为类似,但会保留最后一个换行符,
就像emacs编辑的文件,永远给最后一行加上换行符.
1 | str: > |
而如果想表达类似python中三个引号的作用,保留字符串 中 的换行,可以使用 |
如果使用 +
, -
等标记,则可以对末尾的换行符做定义,
+
表示保留, -
表示删除
1 | str: | |
锚点和别名
主要用途是通过引用一部分公共的内容,减少文件中重复的部分
1 | defaults: &defaults # &表示起别名,跟在想起的键后 |