여기서 문서(예: <<)의 용도는 무엇입니까?

여기서 문서(예: <<)의 용도는 무엇입니까?

~에서고급 Bash 스크립팅 가이드:

특수 기호 << ... 대화형 프로그램 < 명령 파일과 유사

사실 여기 문서 표기법 과 관련하여 내가 생각할 수 있는 <<모든 것은 간단히 < command-file또는 를 사용하여 수행할 수 있습니다 <<< 'list of commands'. 즉, 나는 할 수 있다

cat < <(echo fdsa
echo asdf)

또는

cat <<< 'fdsa
asdf'

바꾸다

cat << a
fdsa
asdf
a

한 가지 (명백한) 예외는 전달한 종료 인수에 따라 명령 목록을 다르게 종료하려는 경우입니다. 그러나 이것이 유용할 수 있는 상황은 생각나지 않습니다.

또 다른 예외는 여기 문서를 사용하면 특수 문자(예: ' )를 이스케이프 처리할 걱정 없이 출력에 넣을 수 있다는 것입니다. 그러나 이는 필수 기능이라기보다는 편의성에 더 가깝습니다.

여기 문서가 너무 중요해서 유닉스가 이를 위해 특별한 연산자를 예약할 수 있는 곳이 또 어디 있습니까?

답변1

<<<"..."Bash의 여기 문자열( ) 또는 프로세스 대체( ) 가 없는 비 Bash 쉘 <(...)과 누군가가 시스템 간에 어느 정도 이식성을 나타내는 스크립트를 작성해야 한다는 사실을 고려하십시오.

이 문서는 미리 형식화된 여러 줄의 텍스트를 유틸리티에 전달해야 할 때마다 사용되며, 유틸리티는 내용에 대한 변수 대체 등을 수행하거나 수행하지 않을 수 있습니다.

스크립트에서 이는 사용자에게 일부 텍스트를 표시하는 데 도움이 될 수 있습니다. 예를 들면 다음과 같습니다.

지루한 일을 피하기 위해

echo 'Usage:'
echo "    $0 [-a|-b] file [file ...]"
echo
echo 'Options:'

(실제로 누군가가 이 작업을 수행하고 어떤 문자열이 평가되었고 어떤 문자열이 평가되지 않았는지 추적하려고 시도하는 실제 예를 책에서 찾아보세요. 확실히 내 코드 검토를 통과하지 못할 것입니다.https://books.google.com/books?id=0LvYSCi7QsIC&pg=PA201)

대신에 이 문서를 다음 위치에 간단히 공급할 수 있습니다 cat.

cat <<-END_USAGE
        Usage:
            $0 [-a|-b] file [file ...]

        Options:
END_USAGE

END_USAGE덧붙여서, 이는 여기에서 문서 "태그"( , 등)를 지능적으로 선택하여 스크립트의 일정량을 문서화할 수 있는 기회도 제공합니다 END_FTP.

ftp또한 표준 입력에서 일련의 명령을 읽을 수 있는 다른 프로그램과 같은 유틸리티에 완전한 스크립트를 보내는 데 유용합니다.

Bash 프로그래머로서 당신은 분명히 Bash의 작업 방식을 자유롭게 사용할 수 있지만 여기 문서는 길고 지저분한 문자열을 사용하는 것에 비해 더 명확한 접근 방식에 비해 미리 형식화된 문서를 명령에 보내는 방법을 여전히 제공한다고 생각합니다.

제거하다/bin/shBash의 여기 문서는 Bash 를 POSIX 적합성을 심각하게 약화시키기 때문에 대부분의 Unix 시스템에 대한 후보로서 Bash를 쓸모 없게 만듭니다 .

관련 정보