プロが教える店舗&オフィスのセキュリティ対策術

シェルスクリプトでmd5sumを計算して2つのファイルを比較しようとしています。

/bin/sh

# ファイル名を出力
echo "fileout1_${file1DirFile}"→/var/log/httpd.log 入っています。
echo "fileout2_${file2DirFile}"→/root/httpd.log 入っています。

#-- MD5値取得
file1DirFileMD5=`md5sum ${file1DirFile} | awk '{printf("%s",$1)}'`
file2DirFileMD5=`md5sum ${file2DirFile} | awk '{printf("%s",$1)}'`

この後、ifで「file1DirFileMD5」と「file2DirFileMD5」比較。

<質問>
#-- MD5値取得 の部分の下二行で、シェルスクリプトが止まります。
止まる原因が分からないのです。(処理が進まず、止まったままになります)

原因がわからず困っております。
別の書き方でも構わないので、解決方法はないでしょうか。
ご教授お願いします。

A 回答 (2件)

awkはパイプ入力がなければ入力を待ち続けます(とまってしまい


ます)。
md5sumは引数がなければ 入力を待ち続けます(とまってしまいます)。
というわけで
変数${file1DirFile}が、からっぽではないかと疑っています。

file1DirFileMD5=`md5sum ${file1DirFile} | awk '{printf("%s",$1)}'`

の行の直前に

echo md5sum ${file1DirFile}

をいれて出力を確認してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。

リアルタイムに書き込むファイル(messagesのようなログファイル)があり、
どうもそこでmd5が算出できずに止まっていたようです。
ただ、そのリアル他むファイルを除外してファイル一覧を作成する方法を現在探しています。

情報ありがとうございました。

お礼日時:2013/02/17 22:30

sh -x なんとかで実行してなんか分かりませんか?

    • good
    • 0
この回答へのお礼

ありがとうございます。

リアルタイムに書き込むファイル(messagesのようなログファイル)があり、
どうもそこでmd5が算出できずに止まっていたようです。
ただ、そのリアル他むファイルを除外してファイル一覧を作成する方法を現在探しています。

情報ありがとうございました。

お礼日時:2013/02/17 22:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!