
ログ ファイルのテキストを電子メールの本文として送信するスクリプトがあります。そのログ ファイルでは、読みやすくするためにテキストの行間に空白行がいくつか入っています。
スクリプトで次の行を使用すると、電子メールは適切な形式で正常に送信されます。
cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}
しかし、今度はメールに複数のファイルを添付したいので、次のように行を変更しました。
( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}
${i}
両方の行で が電子メールの受信者であることに注意してください。
つまり、電子メールは添付ファイル付きで正常に送信されますが、メッセージの本文は改行などのない 1 つの大きなテキスト ブロックになります。
mailx 行を正しく記述しませんでしたか? 書式設定をメッセージの本文に保持する方法はありますか?
答え1
コマンドラインで引用符で囲まれていない改行はスペースとして扱われます。そのため、次のように記述できます。
コマンド1 && コマンド2
引用符で囲まれていない改行文字はセミコロンとして扱われることがあります。しかし、
echo `cat ${log}`
ログファイル内の改行文字はすべてスペースに変換されます。これを修正するには次のようにします。
echo "`cat ${log}`"
でも、なぜこう言わないのか
cat ${log}
?