Назад | Перейти на главную страницу

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

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

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

#!/bin/sh

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

my_function

Окружающая среда:

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

  • OSX 10.7, bash 3.2.48 (1) -release (x86_64-apple-darwin11).
  • Ubuntu 10.04.3, bash 4.1.5 (1) -выпуск (x86_64-pc-linux-gnu)

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

Кроме того, как вы это выполняете? Я сделал chmod +x test.sh а потом ./test.sh

РЕДАКТИРОВАТЬ: Я получил ту же ошибку, что и вы, когда добавил пробел в начале строки с закрывающим HEREDOC.

Дополнительное примечание: конечный пробел за закрывающим HEREDOC также может вызвать это