是否可以插入定界符在 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
也可能导致这种情况