¿Cómo utilizar un heredoc dentro de una función bash?

¿Cómo utilizar un heredoc dentro de una función bash?

¿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.shy 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 HEREDOCtambién puede causar esto.

información relacionada