here-document gives 'unexpected end of file' error
我需要我的脚本才能从终端发送电子邮件。 根据我在这里和网上许多其他地方看到的内容,我将其格式化为:
1 2 3 4 5 | /var/mail -s"$SUBJECT""$EMAIL" << EOF Here's a line of my message! And here's another line! Last line of the message here! EOF |
但是,运行此命令时会收到以下警告:
1 2 3 | myfile.sh: line x: warning: here-document at line y delimited by end-of-file (wanted 'EOF') myfile.sh: line x+1: syntax error: unexpected end of file |
...其中x行是程序中最后写入的代码行,y行是其中包含
如果编写
此外,请确保该行上
开始或结束此处文档的行可能包含一些不可打印或空格字符(例如,回车符),这意味着第二个" EOF"与第一个" EOF"不匹配,并且也不会像这样结束本文这应该。这是一个非常常见的错误,仅使用文本编辑器就很难检测到。您可以使用
1 | cat -A myfile.sh |
一旦看到
请尝试删除
1 | /var/mail -s"$SUBJECT""$EMAIL" <<-EOF |
使用
请注意,如果您执行此操作,也会收到此错误;
1 2 3 | while read line; do echo $line done << somefile |
因为在这种情况下
连同Barmar和Joni提到的其他答案,我注意到使用