Bash 스크립트의 에코 탭 문자

Muhammad Husnain 2023년6월20일
Bash 스크립트의 에코 탭 문자

이 글은 Bash 스크립트를 사용할 때 하나 또는 여러 개의 문자를 에코하는 방법을 설명합니다.

Bash 스크립트의 에코 탭 문자

echo 명령은 간단합니다. 터미널에 전달되는 모든 내용을 인쇄합니다. 일반적으로 변수를 다음과 같이 저장하면

example='         'testing

echo '['$example']' 명령을 사용하여 이 변수를 인쇄하려고 하면 다음과 같은 결과가 표시됩니다.

[ testing]

이것은 우리가 입력했거나 변수에 저장한 것이 아닙니다. 위의 예에서 문자를 두 번 사용했지만 우리가 보는 것은 하나의 공백입니다.

이 동작은 모든 셸에서 일관되지 않습니다. 예를 들어 zsh 셸에서 동일한 스크립트를 실행하면 다음과 같은 결과가 나올 것으로 예상됩니다.

[               testing]

Bash 스크립트로 돌아가서 몇 가지 방법이 있습니다.

-e 플래그 사용

-e 플래그는 백슬래시 이스케이프 해석 활성화를 의미합니다. 위와 같은 예제를 작성했다면 다음과 같이 작성할 것입니다.

example='\t\t'testing
echo -e '['$example']'

결과는 다음과 같습니다.

[               testing]

\t 부분은 탭을 나타냅니다. 그래서 우리는 두 개의 탭을 도입하고 싶었기 때문에 \t\t로 작성했습니다.

-e 플래그가 전달되면 \t 기호는 탭으로 해석되고 필요에 따라 표시됩니다.

다음과 같이 -e 플래그를 사용하지 않으면 \t를 리터럴 문자열로 읽고 탭으로 처리하지 않습니다.

example='\t\t'testing
echo '['$example']'

결과는 다음과 같습니다.

[\t\ttesting]

플래그를 전달하는 것은 POSIX가 아니라는 점에 유의해야 합니다. 따라서 플래그가 구현되지 않은 make와 같이 이식 가능하게 사용할 수 없습니다. 따라서 거의 보편적인 printf를 포함하여 몇 가지 대안에 대해 논의할 것입니다.

물론 이 부분은 echo를 완전히 버릴 것이기 때문에 우리가 시작한 부분에서 약간 벗어납니다.

큰따옴표 사용

이것은 틀림없이 가장 간단한 솔루션이며 구문 이외의 다른 설명이 필요하지 않습니다. 다음과 같이 명령을 작성합니다.

example='       'testing
echo "[$example]"

결과는 다음과 같습니다.

[       testing]

대신 printf를 사용하십시오.

이것은 세 가지 솔루션 중 가장 휴대하기 쉽고 가장 권장되는 솔루션입니다. echo에는 많은 구현과 버전이 있지만 printf는 거의 동일합니다.

어디에서나 별도로 구현하더라도 매우 유사하게 구현됩니다. 우리는 위 방법의 변형이 zsh를 사용하여 호출할 때 동일한 결과를 초래하지만 bash를 사용하여 호출할 때 다른 결과를 낳는 것을 볼 수 있습니다.

printf를 사용하기 위한 구문은 아래에 정의되어 있습니다.

example='       'x
printf '%s\n' "[$example]"

결과는 다음과 같습니다.

[       x]

일반적인 권장 사항으로 echo는 필요한 출력이 hello와 같은 간단한 텍스트인 한 잘 작동하지만 복잡한 경우에는 echo를 사용하는 것이 까다로울 수 있습니다. 이러한 모든 경우(특수 문자 등)에는 printf를 대신 사용하는 것이 좋습니다.

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

관련 문장 - Bash Echo