00355 yaml文件语法


前言

YAML(YAML Ain’t Markup Language)是一种易读的数据序列化格式,广泛用于配置文件(如Docker Compose、Kubernetes、Ansible等)。以下是其核心语法:


1. 基本规则

  • 缩进表示层级:使用空格(不能用Tab),通常2或4个空格
  • 键值对key: value(冒号后必须加空格)
    name: Alice
    age: 30
  • 注释:以 # 开头
    # 这是注释

2. 数据类型

标量(Scalars)

  • 字符串(默认不用引号,特殊字符需用双引号)
    path: /usr/bin     # 普通字符串
    message: "Hello\nWorld"  # 转义字符
  • 数值
    integer: 42
    float: 3.14
  • 布尔值
    is_active: true   # 或 false
    enabled: yes      # 或 no(兼容写法)
  • 空值
    result: null   # 或 ~

集合

  • 列表(List):用 - 开头
    colors:
      - red
      - green
      - blue
    
    # 行内写法
    colors: [red, green, blue]
  • 字典(Map):嵌套键值对
    person:
      name: Bob
      age: 25
    
    # 行内写法
    person: {name: Bob, age: 25}

3. 多行字符串

  • 保留换行|
    message: |
      This is
      a multi-line
      string.
  • 折叠换行>):换行转空格
    summary: >
      This is a long
      sentence in one line.

4. 高级特性

锚点与别名(复用数据)

defaults: &base_config  # 定义锚点
  timeout: 60
  retries: 3

production:
  <<: *base_config     # 合并锚点内容
  domain: "example.com"

多文档支持

--- 分隔多个YAML文档

---
doc1: "First document"
...
---
doc2: "Second document"

5. 特殊语法

  • 强制类型转换!!类型
    str_as_int: !!int "123"  # 字符串转整数
  • 复合键:用 ? 表示复杂键名
    ? [name, age]
    : value

6. 示例

# 完整示例
server:
  host: "127.0.0.1"
  ports:
    - 80
    - 443
  environment: production
  features: 
    auto_restart: true

database:
  credentials:
    username: admin
    password: "secret"

logging: 
  files: 
    - /var/log/app.log
  max_size: "10MB"

# 多行文本
description: |
  This is a YAML demo
  spanning multiple lines.

注意事项

  1. 禁止使用Tab缩进
  2. 字符串不需要引号,但包含 :, {, [, , 等符号时必须加引号
  3. 区分大小写(Truetrue

💡 工具推荐:用 YAML Lint 在线验证语法。
常见应用:Kubernetes manifests, GitHub Actions, Docker Compose, CI/CD配置等。

结语

第三百五十五篇博文写完,开心!!!!

今天,也是充满希望的一天。


文章作者: LuYF-Lemon-love
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LuYF-Lemon-love !
  目录