如何在 Bash 函数中使用 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

环境:

  • 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

编辑:当我在行首添加一个空格并用结束的 HEREDOC 结尾时,我收到了与您相同的错误。

进一步注意:结尾后面的空格HEREDOC也可能导致这种情况

相关内容