É possível inserir um heredoc dentro de uma função bash?
A amostra trivial abaixo resulta em um erro: ./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")
#!/bin/sh
my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}
my_function
Meio Ambiente:
- Ubuntu 11.04 (GNU / Linux 2.6.38-8-server x86_64)
- Lançamento do GNU bash, versão 4.2.8 (1) (x86_64-pc-linux-gnu)
Respostas:
Seu código parecia bom para mim, então copiei linha por linha e funcionou para mim:
É possível redigitar o arquivo manualmente apenas para garantir que você não esteja faltando ou adicione espaços / guias / etc?
Além disso, como você está executando? Eu fiz um
chmod +x test.sh
e depois./test.sh
EDIT: Recebi o mesmo erro que você quando adicionei um espaço no início da linha com o fechamento do HEREDOC.
Nota adicional: Um espaço à direita atrás do fechamento
HEREDOC
também pode causarfonte
HEREDOC
também podem causar isso (Este tipo de erros são realmente difíceis de rastrear suspiro..)