2 設計

今回の目標を達成するには、 基本的には [3] で作成した csh スクリプト wwwcheck1.csh を実行するときに、 以前に持ってきてあったファイルを別な場所に保存した上で、 同じ WWW ページを新たに取得して、それらを比較すればいいので、 wwwcheck1.csh の修正と、参照用のスクリプト wwwcheck2.csh は、 以下のように考えればいいだろうと思います:

ファイルの違いを調べるには、 Unix に標準的に用意されている diff というコマンドで行えます。

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日