¿Es posible insertar un heredoc dentro de una función bash?
La muestra trivial a continuación 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-server x86_64)
- GNU bash, versión 4.2.8 (1) -release (x86_64-pc-linux-gnu)
Respuestas:
Tu código me pareció bien, así que lo copié línea por línea y funcionó para mí en:
¿Es posible que vuelva a escribir el archivo a mano solo para asegurarse de que no se está perdiendo o agregando espacios / pestañas / 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 comienzo de la línea con el cierre de HEREDOC.
Nota adicional: un espacio detrás del cierre
HEREDOC
también puede causar estofuente
HEREDOC
también puede causar esto (este tipo de errores son realmente difíciles de rastrear. Suspiro).