next up previous contents
Next: 12.4.3 cgi.3 ........ image/gif Up: 12.4 簡単なCGIサンプル Previous: 12.4.1 cgi.1 ........ text/plain

12.4.2 cgi.2 ........ text/html で出力

この例は、<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から呼んだとき、何が起こるか観察して下さい。



Noriyo Kanayama