본문 바로가기
C.W.K.
Stream
Lesson 05 of 08 · published

멀티라인 string — | literal vs > folded

~12 min · yaml, strings, block-scalars

Level 0평문
0 XP0/64 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

두 block 스칼라 스타일, 그리고 indicator

| — literal: 모든 줄바꿈 유지

파이프는 '줄바꿈을 하나도 안 건드린다' 는 뜻이야. shell script 나 코드 블록, 줄바꿈이 의미를 갖는 여러 문단짜리 설명에 써.

> — folded: 스페이스로 합침, 빈 줄 = 문단 break

부등호는 '이어진 줄들을 스페이스로 붙이고, 빈 줄만 문단 경계로 본다' 는 뜻이야. 출력에서는 알아서 줄이 흘러도 되지만 소스에서는 좁게 읽히면 좋겠는 산문 문단에 써.

Chomping indicator

|> 뒤에 -+ 를 붙여서 끝에 남는 줄바꿈을 조절해.

  • |>clip 이 기본값이야. 끝에 줄바꿈이 하나 남아.
  • |->-strip. 끝 줄바꿈을 아예 안 남겨.
  • |+>+keep. 끝에 있던 줄바꿈을 전부 그대로 둬.

들여쓰기 indicator (드물지만 유용)

|2 는 '이 block 스칼라 안쪽은 2 칸 들여쓴 걸로 쳐라' 는 뜻이야. 내용의 첫 줄부터 공백으로 시작해서 파서가 칸 수를 잘못 셀 때 요긴해.

folded 모드는 코드를 소리 없이 망가뜨려: Python 이나 YAML 조각을 > 안에 넣으면 줄바꿈이 전부 스페이스로 바뀌면서 문법적으로 깨진 덩어리가 나와. 코드 블록에는 무조건 | 를 써. > 는 렌더링할 때 줄이 다시 흘러도 괜찮은 산문에만 쓰고.

Code

| literal — 줄바꿈 보존·yaml
script: |
  #!/usr/bin/env bash
  set -euo pipefail

  echo "hello"
  for i in 1 2 3; do
    echo "$i"
  done
# literal 줄바꿈 보존된 단일 string 으로 파싱.
> folded — 줄을 문단으로 합침·yaml
description: >
  Markup Quest covers four data and document
  formats every developer touches every day.

  This second paragraph is separated by the
  blank line above. Inside a paragraph, lines
  are joined into one with spaces.
# 파싱: "Markup Quest covers four... every day.\n\nThis second paragraph...\n"
Chomping — strip vs keep vs clip (기본)·yaml
clip:  |
  line one
  line two
# 결과: "line one\nline two\n" — trailing \n 한 개

strip: |-
  line one
  line two
# 결과: "line one\nline two" — trailing \n 없음

keep:  |+
  line one
  line two


# 결과: "line one\nline two\n\n\n" — 모든 trailing \n 보존
실제 사례: script 든 Kubernetes ConfigMap·yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: bootstrap-script
data:
  init.sh: |
    #!/usr/bin/env bash
    set -euo pipefail
    apt-get update
    apt-get install -y curl jq
    curl -fsSL https://example.com/setup | bash

External links

Exercise

같은 다섯 줄짜리 Bash script 를 세 가지로 써봐. | 로 한 번, > 로 한 번, |- 로 한 번. 각각 yq 로 파싱해서 나온 문자열을 읽어. 줄바꿈을 잃는 건 어느 쪽인지 (> 버전이야), 끝 줄바꿈을 잃는 건 어느 쪽인지 (|- 야) 눈으로 확인해. 그러고 나서 Kubernetes ConfigMap 에선 뭘 잡을지 정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.