Isso é mais geral que o bash. No shell POSIX, o seu EOF
é referido como uma palavra , na discussão de aqui-documentos :
If no characters in word are quoted, all lines of the here-document shall be expanded for parameter expansion, command substitution, and arithmetic expansion. In this case, the
<backslash>
in the input behaves as the<backslash>
inside double-quotes (see Double-Quotes). However, the double-quote character ('"'
) shall not be treated specially within a here-document, except when the double-quote appears within"$()"
,"''"
, or"${}"
.
As citações são feitas usando aspas simples, aspas duplas ou o caractere de barra invertida. POSIX menciona os documentos aqui na discussão de citando :
The various quoting mechanisms are the escape character, single-quotes, and double-quotes. The here-document represents another form of quoting; see Here-Document.
A chave para entender a falta de tratamento dos caracteres #
é a definição dos documentos aqui:
allow redirection of lines contained in a shell input file
Ou seja, nenhum significado (além de possível expansão de parâmetro, etc.) é dado aos dados pelo shell, porque os dados são redirecionados para outro programa: cat
, que não é um intérprete de shell. Se você redirecionasse para um programa shell , o resultado seria o que a shell pudesse fazer com os dados.