format 함수
format 함수 (format Function)
format 함수는 사양(specification) 문자열에 따라 여러 값을 포맷해 하나의 문자열을 생성해요. C의 printf 함수 및 다른 프로그래밍 언어의 유사한 함수들과 비슷해요.
출처: 문서
본문
format 함수는 사양 문자열에 따라 여러 값을 포맷해 문자열을 생성해요. C의 printf 함수 및 다른 프로그래밍 언어의 유사한 함수와 비슷해요.
format(spec, values...)
예시 (Examples)
> format("Hello, %s!", "Ander")
Hello, Ander!
> format("There are %d lights", 4)
There are 4 lights
%s나 %d 같은 간단한 포맷 동사(verb)는 종종 더 읽기 쉬운 템플릿 보간 문법과 비슷하게 동작해요.
> format("Hello, %s!", var.name)
Hello, Valentina!
> "Hello, ${var.name}!"
Hello, Valentina!
인자 위치 번호를 지정할 수도 있어요.
> format("%[1]s%[2]s%[1]s%[3]s", "/", "path", "file.tf")
"/path/file.tf"
포맷 동사 %#v는 어떤 타입의 값이든 받아 JSON 인코딩으로 표현해요. 이는 구성을 검증하면서 모듈에 주어진 값을 오류 메시지로 설명할 때 유용해요.
> format("%#v", "hello")
"\"hello\""
> format("%#v", true)
"true"
> format("%#v", 1)
"1"
> format("%#v", {a = 1})
"{\"a\":1}"
> format("%#v", [true])
"[true]"
> format("%#v", null)
"null"
format 함수는 더 복잡한 포맷 사양을 사용할 때 가장 유용해요.
사양 문법 (Specification Syntax)
사양은 % 문자로 시작하는 포맷 동사들을 포함한 문자열이에요. 함수 호출에는 사양의 각 동사 시퀀스마다 추가 인자가 하나씩 있어야 해요. 동사들은 연속된 인자와 매칭되어, 각 인자가 해당 포맷 동사가 요구하는 타입으로 변환 가능한 한 지시대로 포맷돼요.
기본적으로 % 시퀀스는 첫 번째부터 차례로 인자를 소비해요. 동사 문자 바로 앞에 [n] 시퀀스를 넣으면(여기서 n은 10진 정수), 특정 값 인자를 1부터 시작하는 인덱스로 명시적으로 선택해요. 명시적 인덱스 없이 이어지는 호출은 그 다음 n+1, n+2 등으로 진행돼요.
포맷 문자열이 불가능한 변환을 요청하거나 주어진 것보다 더 많은 인자에 접근하면 오류가 발생해요. 지원되지 않는 포맷 동사에도 오류가 발생해요.
동사 (Verbs)
사양에는 다음 동사들이 포함될 수 있어요.
| 동사 | 결과 |
|---|---|
%% |
값을 소비하지 않는 리터럴 퍼센트 기호. |
%v |
값 타입에 기반한 기본 포맷. null, list, map 타입 항목을 포함한 모든 타입 허용. |
%#v |
jsonencode처럼 값의 JSON 직렬화. 모든 타입 허용. |
%t |
불리언으로 변환해 true 또는 false 생성. |
%b |
정수로 변환해 2진수 표현 생성. |
%d |
정수로 변환해 10진수 표현 생성. |
%o |
정수로 변환해 8진수 표현 생성. |
%x |
정수로 변환해 소문자 16진수 표현 생성. |
%X |
%x와 같지만 대문자 사용. |
%e |
숫자로 변환해 -1.234456e+78 같은 과학 표기법 생성. |
%E |
%e와 같지만 지수 도입에 대문자 E 사용. |
%f |
숫자로 변환해 지수 없는 소수 표기법(123.456) 생성. |
%g |
큰 지수에서는 %e, 그 외에는 %f처럼 동작. |
%G |
큰 지수에서는 %E, 그 외에는 %f처럼 동작. |
%s |
문자열로 변환해 문자열의 문자를 삽입. |
%q |
문자열로 변환해 JSON 따옴표 문자열 표현 생성. |
기본 포맷 동사 (Default Format Verbs)
%v를 사용하면 Terraform이 값 타입에 따라 적절한 포맷 동사를 선택해요.
| 타입 | 동사 |
|---|---|
string |
%s |
number |
%g |
bool |
%t |
| 기타 | %#v |
null 값은 %v나 %#v로 포맷하면 문자열 null을 생성하고, 다른 동사에서는 오류를 발생해요.
너비 수정자 (Width Modifier)
너비 수정자는 동사 바로 앞에 선택적 10진수와 함께 사용해요.
더 알아보기 (Learn more)
formatlist함수 — 문자열 리스트 생성formatdate함수 — 날짜·시간 포맷- 문자열 함수 — 다른 문자열 함수