-  ウェブサーバソフトの設定
  
 
Pgbashを CGIとして実行する場合、LD_LIBRARY_PATH環境変数に PostrgeSQLのライブラリパス名を指定する必要があります。apacheウェブサーバソフトの場合は、"httpd.conf"の先頭付近に次のように指定します。 
 
SetEnv LD_LIBRARY_PATH /usr/local/pgsql/lib 
 
-  シェルスクリプトの記述方法
  
 
次のコマンドをシェルスクリプトの先頭に指定します。 
 
#!/usr/local/bin/pgbash 
exec 2>&1 ............ (1) 
echo "Content-type: text/html"   ........................ (2) 
echo ""  
set EXEC_SQL_OPTION  CGI;  ......(3) 
 |   
 
 (1) exec 2>&1  
 exec 2>1 は、標準エラー出力を標準出力に出力するための指定です。必須ではありませんが、bashが出力するエラーメッセージをホームページに表示することができます。 
  
 (2) Content-type 
 CGIとして使用するために、echo "Content-type: text/html"と echo ""は必須です。 
  
 (3) set EXEC_SQL_OPTION CGI; 
set EXEC_SQL_OPTION CGI; は、ホームページで入力されたデータをシェル変数に登録し、出力モードをHTMLにします。 
 
HTMLのFORM文では、GET/POSTメソッドを使用できます。また、クッキーがセットされている場合、クッキーの値は、次のシェル変数に登録されます。 
 
  $HTTP_NCOOKIE        : クッキーの個数
  ${HTTP_COOKIEKEY[i]} : クッキーのキー名
  ${HTTP_COOKIEVAL[i]} : クッキーの値   
 (但し、i は 0 から HTTP_NCOOKIE-1 までです。)
 
 
 シェルスクリプトの一般的な作成方法 
 
Webサーバ上に、例えば次のようなHTMLファイル(ホームページ)があるものとします。ここでは、passwd, MYNAME, ADDRESS の3つのデータを入力するものとします。 
 
<HTML> 
<FORM METHOD=POST ACTION="test.sh"> 
<INPUT TYPE=password NAME=passwd > 
<INPUT TYPE=text NAME="MYNAME" VALUE="sakaida"> 
<INPUT TYPE=text NAME="ADDRESS" VALUE="Osaka"> 
<INPUT TYPE=submit VALUE=submit> 
</HTML> 
 |   
 
この場合、ホームページから入力された3つのデータは、CGIシェルスクリプトの set EXEC_SQL_OPTION CGI; によって、それぞれ $passwd, $MYNAME, $ADDRESS シェル変数に格納されます。そのシェル変数を利用したCGIスクリプトの例は次のようになります。 
 
#!/usr/local/bin/pgbash 
exec 2>&1 
echo "Content-type: text/html"  
echo ""  
set EXEC_SQL_OPTION  CGI; 
# 
connect to dbname as db1 user nopbody $passwd;  
insert into test values( '$MYNAME','$ADDRESS');  
select * from test order by uname limit 100;  
 |   
 
pgbashは、マルチバイト文字のシェル変数名(例えば、$氏名)を使用することはできません。従いまして、HTMLのINPUTタグのNAMEにおいて、全角文字を指定することはできないことになります。 
 
 
 
 |