YAML複数行文字列:リテラルブロックとフォールドブロック
リテラルブロック(|)、フォールドブロック(>)、およびチョンピング修飾子(+、-)を含むYAML複数行文字列構文をマスターします。スクリプト、テンプレート、ドキュメントでの各スタイルの使い分けを学びます。
YAML Features
詳細な説明
YAML複数行文字列
YAMLは複数行テキストコンテンツを扱う複数の方法を提供しています。シェルスクリプト、SQLクエリ、HTMLテンプレート、および複数行にまたがる任意の値に対して適切なスタイルを選択することが重要です。
リテラルブロックスカラー(|)
パイプ文字はすべての改行を書かれた通りに保持します:
script: |
#!/bin/bash
echo "Hello"
if [ -f config.yml ]; then
echo "Config found"
fi
これはシェルスクリプト、コードスニペット、改行が重要なすべてのコンテンツに最適です。
フォールドブロックスカラー(>)
大なり記号は改行をスペースに折りたたみ、流れるような段落を作成します:
description: >
This is a long description
that will be folded into
a single paragraph.
結果:"This is a long description that will be folded into a single paragraph.\n"
フォールドブロック内の空行は実際の改行を作成し、段落を分離できます。
チョンピング修飾子
| と > の両方が末尾の改行を制御するチョンピング修飾子をサポートします:
- クリップ(デフォルト) —
|または>— 末尾に1つの改行 - ストリップ —
|-または>-— 末尾の改行なし - キープ —
|+または>+— すべての末尾の改行を保持
# 末尾の改行なし
message: |-
Hello World
# 末尾の改行を保持
log_entry: |+
Error occurred
インデントインジケータ
数値でインデントレベルを指定できます:
content: |2
This text is indented 4 spaces
but only 2 are part of the content
クォートされた複数行文字列
ダブルクォートされた文字列は複数行コンテンツのエスケープシーケンスをサポートします:
message: "Line one\nLine two\nLine three"
フォーマッターの動作
良いYAMLフォーマッターは以下を行うべきです:
- 作者が選択したブロックスカラースタイル(
|vs>)を保持する - チョンピング修飾子を維持する
- ブロックスカラーのコンテンツを再インデントしない(インジケータ行のみ)
- ブロックスカラー内の末尾の空白を慎重に処理する
ユースケース
複数行文字列はKubernetes ConfigMap(設定ファイルの埋め込み)、GitHub Actions(複数行のrunコマンド)、Ansible(テンプレートコンテンツ)、Helmチャート(埋め込みスクリプト)で不可欠です。リテラルスタイルとフォールドスタイルの違いを理解することで、シェルスクリプトや設定テンプレートでの予期しない動作を防止できます。