Bash ANSI C 인용문이 개행 문자를 올바르게 인용하지 않습니다.

Bash ANSI C 인용문이 개행 문자를 올바르게 인용하지 않습니다.

Bash의 ANSI C 인용은 C(또는 작은따옴표가 있는 Python)와 동일한 방식으로 문자열을 읽어야 합니다.

printf $'"Hello, World!\\n"'

#expected output (no newline, the slash is escaped)
"Hello, World!\n"

#actual output (one newline)
"Hello, World!
"

하지만 제대로 작동하지 않는 것 같습니다. 이것은 버그입니까?

답변1

당신은 printf그것을 잘못 사용했습니다. 예상되는 형식 문자열을 제공하고 printf이에 따라 해석했습니다 \n. 올바른 형식 문자열을 사용하고 ANSI-C 인용 문자열을 인수로 제공하십시오.

$ printf '%s\n' $'"Hello, World!\\n"'
"Hello, World!\n"

또는 형식 문자열에서 매개변수가 어디에 있는지 더 명확하게 표시하려면 다음을 수행하세요.

$ printf '|%s|\n' $'"Hello, World!\\n"'
|"Hello, World!\n"|

관련 정보