こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

#!/bin/sh

mail -s "test" "info@example.co.jp" <<END
メールテスト

`ls -alh`

END

のようなメールを送信するスクリプトがあります。
メールテストは文字化けしませんでしたが、
`ls -alh`で日付が表示される部分で文字化けします。
どうやらls -alhはLinux環境なのでeuc-jpのようでした。

`ls -alh`の部分を文字化けしないようにするにはどのようにしたら良いのでしょうか?

シェルスクリプトに詳しい方、教えてください。

投稿日時 - 2008-08-09 09:55:56

QNo.4238665

困ってます

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

#1さんの回答のとおりですが、日付部分を日本語で表示させたい場合は、ls の出力を文字コード変換のフィルタに通す必要があります。
変換フィルタは多々ありますが、大抵の場合、標準で glibcのiconvコマンドが使えるはずです。

本件の場合、シェルスクリプトのメール本文にも日本語があるようですから、出力コードはこれにあわせる必要があります。仮にこれをUTF-8だとすると、

`ls -alh | iconv -f euc-jp -t utf-8`

となります。
-f が入力の文字コード、-t が出力の文字コードです。
iconv --list で、対応文字コードのリストが確認できます。

投稿日時 - 2008-08-09 11:37:36

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

`LC_ALL=C ls -alh`
で、英語モードで表示されるので、文字コードの心配が無くなります。

文字コード変換のコマンドは、OSによって違います。

投稿日時 - 2008-08-09 10:06:37

あなたにオススメの質問