• ベストアンサー

シェルスクリプトの文字化け

#!/bin/sh mail -s "test" "info@example.co.jp" <<END メールテスト `ls -alh` END のようなメールを送信するスクリプトがあります。 メールテストは文字化けしませんでしたが、 `ls -alh`で日付が表示される部分で文字化けします。 どうやらls -alhはLinux環境なのでeuc-jpのようでした。 `ls -alh`の部分を文字化けしないようにするにはどのようにしたら良いのでしょうか? シェルスクリプトに詳しい方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

#1さんの回答のとおりですが、日付部分を日本語で表示させたい場合は、ls の出力を文字コード変換のフィルタに通す必要があります。 変換フィルタは多々ありますが、大抵の場合、標準で glibcのiconvコマンドが使えるはずです。 本件の場合、シェルスクリプトのメール本文にも日本語があるようですから、出力コードはこれにあわせる必要があります。仮にこれをUTF-8だとすると、 `ls -alh | iconv -f euc-jp -t utf-8` となります。 -f が入力の文字コード、-t が出力の文字コードです。 iconv --list で、対応文字コードのリストが確認できます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

`LC_ALL=C ls -alh` で、英語モードで表示されるので、文字コードの心配が無くなります。 文字コード変換のコマンドは、OSによって違います。

関連するQ&A

専門家に質問してみよう