1. ホーム
  2. bash

[解決済み] here-documentで'unexpected end of file'エラーが発生する。

2023-01-26 09:53:11

質問

ターミナルからメールを送信するスクリプトが必要です。ここやネット上の多くの場所で見たものを基に、私はこのようにフォーマットしました。

/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

しかし、これを実行するとこのような警告が表示されます。

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行目はその行に /var/mail を含む行です。を置き換えてみました。 EOF を他のものに置き換えてみました ( ENDOFMESSAGE , FINISH など)を使っていますが、無駄です。私がオンラインで見つけたほぼすべてのものは、それがこの方法で行われ、私は本当にbashの初心者なので、私は自分自身でそれを理解するのに苦労しています。どなたか手助けしていただけませんか?

どのように解決するのですか?

この EOF トークンは行頭になければならず、それに付随するコードブロックと共にインデントすることはできません。

もしあなたが <<-EOF と書くと、インデントしても構いませんが、インデントするには タブ 文字でインデントしなければなりません。そのため、コードのブロックと同じにはならないかもしれません。

また、空白文字がないことを確認してください の後に EOF のトークンを行に追加します。