Bash 스크립트의 변수에 개행 문자를 추가하는 방법

Bash 스크립트의 변수에 개행 문자를 추가하는 방법

내가 할 때

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
===========

이것에코명령을 사용해야 합니다.큰따옴표.

관련 정보