Можно ли вставитьхередоквнутри функции 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
также может быть причиной этого.