실행 환경: Ubuntu 22.04.2 LTS
간단한 개행문자가 들어가는 변수를 선언하고 출력해 보겠다.
var="hello\nworld"
echo $var
hello\nworld
\n
을 문자 그대로 출력하는게 아닌 개행 문자로 사용하고 싶을 때, 아래 몇 가지 해결 방법이 존재한다.
case 1.
printf
명령어 사용
var="hello\nworld"
printf "$var\n"
case 2.
echo -e
명령어 사용
var="hello\nworld"
echo -e $var
case 1,2 둘 다 아래와 같이 출력된다.
hello
world
위 예제처럼 단순히 변수를 출력하는 경우가 아닌 변수에 개행문자를 담아서 파라미터로 전달해야 하는 경우가 필요할 수도 있다. 그럴 땐 아래와 같이 사용할 수 있다.
var=hello$'\n'world
echo "$var"
hello
world
참고: ANSI-C Quoting 에서 관련 내용을 확인할 수 있다.
(약간 주제에서 벗어날 수 있으나, bash script에서 curl 명령어를 자주 사용하고, 같은 개행 문자 관련 이슈이기에 추가하였다)
--data-binary
옵션을 사용하면 된다.
ex) 텍스트 파일을 특정 스토리지 버킷에 업로드 요청을 보낼 때
curl -s -X PUT -H \
"Content-Type: $ContentType" \
-H "Authorization: $Authorization" \
--data-binary "@$LocalFile" $BUCKET$Path
아래 스택오버플로우 글을 참고하여 해결하였다.
How to send line break with curl?