¿Es posible insertar unheredoc¿Dentro de una función bash?
El ejemplo trivial siguiente da como resultado un error:./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, versión 4.2.8(1) (x86_64-pc-linux-gnu)
Respuesta1
Su código me pareció bien, así que lo copié línea por línea y funcionó para mí en:
- OSX 10.7, versión bash 3.2.48(1) (x86_64-apple-darwin11).
- Ubuntu 10.04.3, versión bash 4.1.5(1) (x86_64-pc-linux-gnu)
¿Es posible volver a escribir el archivo a mano solo para asegurarse de que no faltan ni agregan espacios/tabulaciones/etc.?
Además, ¿cómo lo estás ejecutando? hice un chmod +x test.sh
y luego./test.sh
EDITAR: Recibí el mismo error que usted cuando agregué un espacio al principio de la línea con el HEREDOC de cierre.
Nota adicional: un espacio detrás del cierre HEREDOC
también puede causar esto.