É possível inserir umheredocdentro 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
Ambiente:
- Ubuntu 11.04 (GNU/Linux 2.6.38-8-servidor x86_64)
- GNU bash, versão 4.2.8(1)-release (x86_64-pc-linux-gnu)
Responder1
Seu código pareceu bom para mim, então copiei linha por linha e funcionou para mim:
- OSX 10.7, versão bash 3.2.48(1) (x86_64-apple-darwin11).
- Ubuntu 10.04.3, lançamento bash 4.1.5(1) (x86_64-pc-linux-gnu)
É possível redigitar o arquivo manualmente apenas para ter certeza de que não está faltando ou adicionando espaços/guias/etc?
Além disso, como você está executando isso? Eu fiz um chmod +x test.sh
e então./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 causar isso