터미널에서 ASCII 아트가 어떻게 보이는지 보고 싶습니다.
$ cat <<EOF
> # ____ _
> # _ _ / __/ ___ _ | |_
> # | | | |/ / / _` || __|
> # | |_| |\ \__
답변1
이것은 bash보다 더 일반적입니다. POSIX 셸에서는 귀하의 셸 EOF
이 호출됩니다.단어, 논의중여기 문서:
문자가 없으면단어인용할 경우 이 문서의 모든 행은 매개변수 확장, 명령 대체 및 산술 확장을 위해 확장되어야 합니다. 이 경우,
<backslash>
다음과 같이 나타납니다.<backslash>
큰따옴표 내(큰따옴표 참조) 그러나 큰따옴표 문자( )는 또는 에'"'
큰따옴표가 나타나지 않는 한 이 설명서에서 특별하게 취급되어서는 안 됩니다 ."$()"
"``"
"${}"
인용은 작은따옴표, 큰따옴표 또는 백슬래시 문자를 사용하여 수행됩니다. POSIX는 여기 문서 토론에서 언급되었습니다.인용하다:
다양한 인용 메커니즘에는 이스케이프 문자, 작은따옴표 및 큰따옴표가 포함됩니다. 여기에 있는 문서는 대체 인용 형식을 나타냅니다.여기 문서.
누락된 문자 처리를 이해하는 열쇠는 #
여기 문서의 정의입니다.
허용하다리디렉션쉘 입력 파일에 포함된 라인 수
즉, 쉘은 데이터에 어떤 의미도 부여하지 않습니다(가능한 매개변수 확장 등 제외).리디렉션다른 프로그램으로: cat
셸 인터프리터가 아닙니다. 리디렉션하는 경우껍데기, 결과는 쉘이 데이터에 대해 수행할 수 있는 모든 작업이 됩니다.
답변2
여기 문서에는 주석 처리된 줄이 없습니다.
man bash
:
매개변수 및 변수 확장, 명령 대체, 산술 확장 또는 경로 이름 확장은 단어에 대해 수행되지 않습니다. Word에 인용된 문자가 있는 경우 구분 기호는 Word에서 인용문을 제거한 결과이며 문서의 줄은 여기에서 확장되지 않습니다. 단어가 인용되지 않은 경우 문서의 모든 행은 매개변수 확장, 명령 대체 및 산술 확장을 거치며 문자 순서 \는 무시되며 \는 문자 \, $ 및 `를 인용하는 데 사용해야 합니다.
따라서 다음이 필요합니다.
cat <<"EOF"