here-document で「予期しないファイルの終わり」エラーが発生する 質問する

here-document で「予期しないファイルの終わり」エラーが発生する 質問する

ターミナルからメールを送信するスクリプトが必要です。ここで見た内容やオンライン上の他の多くの場所に基づいて、次のようにフォーマットしました。

/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てみましたが、うまくいきませんでした。オンラインで見つけたほとんどすべてでこの方法が採用されていますが、私は bash の初心者なので、自分で解決するのは困難です。どなたか助けていただけませんか?EOFENDOFMESSAGEFINISH

ベストアンサー1

トークンEOFは行の先頭に配置する必要があり、それに伴うコード ブロックと一緒にインデントすることはできません。

記述する場合は<<-EOFインデントできますが、スペースではなく文字でインデントする必要がありますTab。そのため、コード ブロックが均等にならない可能性があります。

また、空白がないことを確認してくださいEOFライン上のトークン。

おすすめ記事