shellscriptでmailコマンドを利用してGmailにメールを送るとnonameという添付ファイルが添付される問題

June 4, 2014

#!/bin/bash

FOO=`command`

echo ${FOO} | mail -s "foo command dayo" foo@example.com

のようなスクリプトを作成した時に、送信先である
Gmailで受信すると本文にコマンドの結果が出力されるのではなく
nonameという添付ファイルが送られてきた。

原因はコマンドの結果にEscape Sequenceが入っていたため
文字コードを上手く認識できなかったようだ。

Escape Sequenceとかガッツリやったことがなくて
IRCに色付けたりターミナルの文字列に色付けたりするぐらいしか
使ったことがなくて、原因が特定できなかった。

@keitap氏は一撃でEscape Sequenceだってわかった。
対応としては

colでエスケープシーケンスを除去 - うまい棒blog

hogemさんが書いてくれたように\を除外するとかして
Escape Sequenceとして認識させないようにして上手くいった。

#!/bin/bash

FOO=`command`

echo ${FOO} | col -b | mail -s "foo command dayo" foo@example.com

こちらからは以上です。