2 設計
今回の目標を達成するには、
基本的には [3] で作成した csh スクリプト wwwcheck1.csh を実行するときに、
以前に持ってきてあったファイルを別な場所に保存した上で、
同じ WWW ページを新たに取得して、それらを比較すればいいので、
wwwcheck1.csh の修正と、参照用のスクリプト wwwcheck2.csh は、
以下のように考えればいいだろうと思います:
- wwwcheck1.csh の修正 :
-
前に取得してあったファイルを別名、
または別のディレクトリへ移動してから新しいものを取得するようにする
-
ブラウザの立ち上げ部分は不要なので削除する
- wwwcheck2.csh :
- 古いものと新しいものの違いを調べ、
違いがある場合はそれを記録するか、
違うものを別のディレクトリにコピーする
- その記録に基づいて (または別なディレクトリにコピーしたものを) ブラウザで参照する
ファイルの違いを調べるには、
Unix に標準的に用意されている diff というコマンドで行えます。
- diff file1 file2 :
file1 と file2 の違いを出力する
diff の出力を見れば、
それらのファイルのどこがどのように違っているかも知ることができますが、
ここでは単純に「違いがあるかどうか」だけを知るために使用することにします。
それには、csh スクリプトのファイル検査式 -z を利用すればいいでしょう:
diff file1 file2 > tmpf
if ( ! -z tmpf ) then
# 違いあり
else
# 違いなし
endif
まず、リダイレクトを用いて diff の出力を一時ファイル tmpf に落としていますが、
diff は違いがない場合は何も出力しませんので、
その一時ファイルのサイズが 0 でないかどうかで
違いがあるかないかを判別できることになります。
``-z file'' は、
file のファイルサイズが 0 のとき真となる式ですが、
その前に ! (否定) がついていますので、
この if 文の条件文は「tmpf のサイズが 0 でないとき真」となります。
つまり違いがある場合に if ブロックが、
違いがない場合に else ブロックが実行されることになります。
竹野茂治@新潟工科大学
2008年1月24日