Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

  1. Главная
  2. Разная информация
  3. Язык YAML

Язык YAML

Запланировано Прикреплена Закрыта Перенесена Разная информация
2 Сообщения 1 Posters 4 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • A Не в сети
    A Не в сети
    Admin
    написал в отредактировано
    #1

    Содержание

    1 ответ Последний ответ
    0
    • A Не в сети
      A Не в сети
      Admin
      написал в отредактировано
      #2

      📘 Одинарные и двойные кавычки в YAML

      В YAML строки можно заключать в одинарные ('...') или двойные ("...") кавычки. Оба варианта корректны, но ведут себя по-разному, особенно при работе с особыми символами, переменными окружения и многострочными значениями.

      Ниже — полное объяснение, обновлённое для всех современных применений YAML.


      🔹 1. Одинарные кавычки ('...')

      ✔ Что делают

      Одинарные кавычки всегда сохраняют строку буквально.
      Никакие спецсимволы, такие как:

      • \n
      • \t
      • $VARIABLE
      • \${VAR}
        не интерпретируются, а остаются как есть.

      ✔ Используйте одинарные кавычки, если:

      • нужно передать буквально то, что написано;
      • вы используете строки с $, \, ", JSON внутри YAML;
      • конфигурация чувствительна к экранированию (например, regex);
      • в Docker Compose значение не должно интерполироваться.

      ✔ Пример:

      server_name: 'element3.nbics.net'
      password: 'pa$$word'
      regex: '^\d{3}-\d{2}-\d{4}$'
      path: 'C:\Program Files\App'
      

      ⚠ Особенность YAML:

      Единственный символ, который нельзя использовать напрямую внутри '...', — это '.
      Для него используется удвоение:

      text: 'Bob''s server'
      

      🔹 2. Двойные кавычки ("...")

      ✔ Что делают

      Двойные кавычки разрешают интерполяцию переменных и управляющие последовательности:

      • \n превращается в перенос строки
      • \t — табуляция
      • \" — экранирование

      А также:

      • переменные окружения в Docker Compose (${VAR})
      • escape-последовательности YAML (формат JSON)

      ✔ Используйте двойные кавычки, если:

      • нужны спецсимволы;
      • требуется интерполяция ${VARIABLE};
      • конфиг используется в CI/CD, Docker Compose, K8s;
      • значение включает переносы строк с escape.

      ✔ Пример:

      server_name: "${SERVER_NAME}"
      welcome: "Hello,\nworld!"
      path: "C:\\Users\\Admin"
      json: "{\"key\": \"value\"}"
      

      🔸 3. Отличия по поведению (в таблице)

      Особенность 'одинарные' "двойные"
      Интерполяция переменных ❌ нет ✔ да
      Обработка \n, \t, \" ❌ нет ✔ да
      Выполняет escape-последовательности ❌ нет ✔ да
      Буквальная строка ✔ да ❌ нет
      Работает в Docker Compose безопаснее для переменных
      Вложенные кавычки только '' для ' можно \"

      🔹 4. YAML без кавычек: когда можно

      Чаще всего YAML допускает строки без кавычек, если они не содержат спецсимволов:

      domain: example.com
      env: production
      

      Но кавычки требуются, если есть:

      • двоеточие : (кроме конца строки)
      • #
      • {}, []
      • *, &
      • $ (в Docker Compose!)
      • \

      🔹 5. YAML в Docker Compose (важно для 2025)

      В Docker Compose "..." интерполирует переменные окружения:

      environment:
        DOMAIN: "${DOMAIN}"
      

      Если нужно отключить интерполяцию:

      environment:
        PASSWORD: '$ecure$Tr!ng'
      

      или даже:

      PASSWORD: '${NOT_A_VARIABLE}'
      

      🔹 6. YAML в Ansible

      В Ansible двойные кавычки требуются для Jinja2:

      msg: "Server is {{ inventory_hostname }}"
      

      А если Jinja не нужен — безопаснее одинарные:

      msg: 'Literal text: {{ not_interpreted }}'
      

      🔹 7. YAML и многострочный текст

      YAML использует блоковые литералы:

      Буквальный текст:

      script: |
        echo "Hello"
        echo "No interpolation"
      

      Сжатый вариант:

      multiline: >
        This is a long line
        that becomes a single line
      

      Кавычки тут обычно не используются.


      🔹 Итог: как правильно выбирать кавычки

      ✔ Одинарные ('...'), если:

      • нужен буквальный текст
      • нет интерполяции
      • есть спецсимволы $, \, {}, которые должны остаться как есть

      ✔ Двойные ("..."), если:

      • нужны переменные ${...}
      • нужны спецсимволы \n, \t, Unicode, JSON
      • сложные значения в CI/CD или Docker Compose

      1 ответ Последний ответ
      0
      Ответить
      • Ответить, создав новую тему
      Авторизуйтесь, чтобы ответить
      • Сначала старые
      • Сначала новые
      • По количеству голосов


      • Войти

      • Login or register to search.
      Powered by NodeBB Contributors
      • Первое сообщение
        Последнее сообщение
      0
      • Категории
      • Последние
      • Метки
      • Популярные
      • World
      • Пользователи
      • Группы