Как использовать heredoc внутри функции bash?

Как использовать heredoc внутри функции bash?

Можно ли вставитьхередоквнутри функции bash?

Приведенный ниже тривиальный пример приводит к ошибке:./heredoc_in_function.sh: 10: Syntax error: end of file unexpected (expecting "}")

#!/bin/sh

my_function () {
cat <<HEREDOC
heredoc contents
HEREDOC
}

my_function

Среда:

  • Ubuntu 11.04 (GNU/Linux 2.6.38-8-сервер x86_64)
  • GNU bash, версия 4.2.8(1)-релиз (x86_64-pc-linux-gnu)

решение1

Ваш код показался мне вполне приемлемым, поэтому я скопировал его строка за строкой, и он заработал у меня:

  • OSX 10.7, bash 3.2.48(1)-релиз (x86_64-apple-darwin11).
  • Ubuntu 10.04.3, bash 4.1.5(1)-релиз (x86_64-pc-linux-gnu)

Можете ли вы перепечатать файл вручную, чтобы убедиться, что вы ничего не пропустили и не добавили пробелов/табуляций и т. д.?

И как ты это делаешь? Я сделал chmod +x test.shа потом./test.sh

EDIT: Я получил ту же ошибку, что и вы, когда добавил пробел в начале строки с закрывающим HEREDOC.

Дополнительное примечание: Пробел после закрытия HEREDOCтакже может быть причиной этого.

Связанный контент