내가 할 때
str="Hello World\n===========\n"
저도 \n
인쇄했는데 줄바꿈은 어떻게 하나요?
답변1
bash
구문을 사용할 수 있습니다
str=$'Hello World\n===========\n'
a가 앞에 오는 작은따옴표는 $
이스케이프 시퀀스를 문자열에 삽입할 수 있는 새로운 구문입니다.
또한 printf
내장되어 결과 출력을 변수에 저장할 수 있습니다.
printf -v str 'Hello World\n===========\n'
두 솔루션 모두 서브셸이 필요하지 않습니다.
아래 문자열을 인쇄해야 하는 경우 다음 예와 같이 큰따옴표를 사용해야 합니다.
echo "$str"
따옴표 없이 문자열을 인쇄하면 개행 문자가 공백으로 변환되기 때문입니다.
답변2
Bourne/POSIX 스타일 셸에서 작은따옴표 안에 리터럴 개행 문자를 넣을 수 있습니다.
str='Hello World
===========
'
여러 줄 문자열의 경우여기에 파일종종 매우 편리합니다. 이 문자열은 명령에 대한 입력으로 사용됩니다.
mycommand <<'EOF'
Hello World
===========
EOF
문자열을 변수에 저장하려면 cat
명령 대체에 이 명령을 사용하십시오. 문자열 끝에 있는 줄 바꿈은 명령 대체에 의해 제거됩니다. 마지막 줄바꿈을 유지하고 싶으시면 끝에 스토퍼를 끼우고 떼어내시면 됩니다. POSIX 호환 쉘에서는 str=$(cat <<'EOF'); str=${str%a}
heredoc를 따를 수 있지만 bash에서는 닫는 괄호 앞에 heredoc가 나타나도록 요구합니다.
str=$(cat <<'EOF'
Hello World
===========
a
EOF
); str=${str%a}
ksh, bash 및 zsh에서는 $'…'
따옴표 붙은 양식을 사용하여 따옴표 안의 백슬래시 이스케이프를 확장할 수 있습니다.
str=$'Hello World\n===========\n'
답변3
스크립트에 줄 바꿈이 여러 번 필요한 경우 줄 바꿈을 포함하는 전역 변수를 선언할 수 있습니다. 이렇게 하면 큰따옴표로 묶인 문자열 내에서 사용할 수 있습니다(변수 확장).
NL=$'\n'
str="Hello World${NL} and here is a variable $PATH ===========${NL}"
답변4
모든 토론에서 이것이 나에게 가장 쉬운 방법입니다.
bash$ str="Hello World
==========="
bash$ echo "$str"
Hello World
===========
이것에코명령을 사용해야 합니다.큰따옴표.