4 コメント行のサポートとブラウザの起動

この節では、3 節のスクリプト wwwcheck1.csh の 2 つの簡単な拡張を考えてみます。

まずは、URL リストファイルでコメント行を許すことを考えます。 例えば URL リストファイル内のいくつかの URL の取得をやめたい場合、 その行を本当に消してしまうよりも コメント行として無視されるようにしておけば、 後でその行を復帰させる場合やテストをする場合などに有用です。 また、各 URL にその URL の説明をつけたり、 URL リストファイルの更新状況などをメモしておくのにも、 コメント行があると便利です。

ここでは、行頭に `#' がついている行を URL リストファイルのコメント行と見なし、 wwwcheck1.csh に無視させることにします。 こうするには、foreach 文の ( ) 内で、 cat で URL リストファイルのすべての行を出力させるのではなく、 行頭が `#' でない行のみを出力させるようにすればいいわけですから、 cat の代わりに以下のようにすればうまくいきます:

( `grep -v "^#" $urllistf` )
grep は Unix の標準コマンドで、 指定したパターンにマッチする (またはマッチしない) 行のみを出力させるコマンドです。 grep で与えるパターンは 正規表現 と呼ばれ、 正規表現では `^' は行頭を意味しますので、 ``^#'' で 「`#' から始まる行」を意味することになります。 grep のオプション -v は、 「そのパターンにマッチしない行」を出力します。 これを指定しないと、逆にコメント行のみを出力することになってしまいます。

次に、wget で HTML ファイルを保存した後で、 最後にブラウザを立ち上げて それらのファイルを見るようにすることを考えてみます。 ブラウザが w3m や firefox の場合には、それを行うには そのコマンド名の後ろにローカルの HTML ファイル名をスペースで区切って 並べて書いていけばいいだけのようですので、 スクリプトの先頭で

set browser = "w3m -N"
のように設定しておいて、スクリプトの最後に
$browser $datad/*.html
という行を追加すればいいだけです。 `*' は、csh スクリプトでは `?' と同様、 ファイル名パターン用の特殊文字で、任意の文字列に一致し、 そしてこれが含まれている単語が、 それにマッチする「複数のファイル名」に展開されます。 つまり、$datad/*.html の部分は、 単にひとつの $datad/1.html のように置き換えられるのではなく、 存在するファイルによる複数の単語に置き換えられるので、 上の行は実際には
$browser $datad/1.html $datad/2.html ...
のような文字列に展開されて実行されます (もちろん実際には $browser$datad の部分も 設定された文字列に展開されます)。

なお、w3m の -N オプションは、 指定した各 HTML ファイルをタブとして開くオプション (w3m バージョン 0.5 以降) です。

竹野茂治@新潟工科大学
2008年1月22日