<TITLE>,</TITLE>,<H1>,</H1>...
といったHTMLの表現を
みて分かるように、HTMLのドキュメントを生成します。
このスクリプトは、内部で、sleepを呼んでいます。dateの3つの出力は、
それぞれ、少なくとも一秒は、ずれているはずです。
こうしたスクリプトを沢山書いていると、つい、先頭の echo を忘れてしまう
ことがあります。今、書いているのは、HTMLのドキュメントそのものではなく、
HTMLのドキュメントを標準出力に出力するプログラムだ
ということを忘れないで下さい。
HTMLには、"<"や">"が頻出するのですが、これらのキャラクターは、シェルの中で、 特別の意味をもっています。これらを含む文字列をechoで出力するとき、 クォートするのを忘れると、シェルがとんでもない勘違いをすることがあります。 この点も注意して下さい。
#!/bin/sh echo Content-type: text/html echo echo "<TITLE>時間差</TITLE>" echo "<H1>" date echo "</H1>" echo "<HR>" echo "<H2>" sleep 1 date echo "</H2>" echo "<HR>" sleep 1 date
Netscape側で表示されるのは、このcgi.2をコマンドラインから起動したときに
出力されるドキュメントそのものではなく、Netscapeが、それをHTML文書として
解釈した結果です。
次に、このファイルcgi.2を、ファイルcgi.2xというファイルにコピーして下さい。 そして、新しいファイルcgi.2xの、Content-typeを、text/htmlから、text/plain に一箇所だけ変更します。 そして、このGatewayスクリプトをURLから呼んだとき、何が起こるか観察して下さい。