run-cgi
名前
run-cgi: CGIシェルスクリプトの特定範囲だけを実行するデバッガ
書式
使い方とオプション
Usage
run-cgi [option] <対象SHELL> <NAMEFILE> [<開始行>-<終了行>]
Option
--log <ファイル名> ログ出力先を変える。 --var <変数名>=<値> 変数代入値を差し替える。 --break <行数> ブレークポイントを入れる。 --debug run-cgi自身のdebug情報を出力する
説明
run-cgiはrunをcgiスクリプトでも使えるようにしたコマンドです。
多くのオプションや使い方はrunと同じなので、基本的な使い方はrunのマニュアルをご覧下さい。本マニュアルではrunと使い方が異なる点に絞って説明をします。
使い方:
run-cgi CGI-SCRIPT namefile run-cgi CGI-SCRIPT namefile 4-6 # CGIの4~6 行目を実行。 run-cgi --log ./errlog CGI-SCRIPT namefile # 出力ログを"errlog"に保存しつつ実行。 run-cgi --var tmp=/tmp/okada/tmp CGI-SCRIPT namefile # 変数tmpに 値を設定して実行。 run-cgi --var dir=/home/usp,tmp=./tmp CGI-SCRIPT namefile # 複数の変数に代入して実行。
例(その1)
簡単なCGIの例として、以下のようなCGI,HTMLとnamefileを用意した。
--------------------------------------------------------------- $ cat TOUROKU.CGI #!/bin/bash -vx # # TOUROKU.CGI 名前と年代を登録する。 # # written by Hoge (hoge@hogehoge.com) Sep. 15, 2011 exec 2> /dev/null LANG=ja_JP.UTF-8 PATH=/home/UTL:/home/TOOL:$PATH apld=. tmp=/tmp/tmp_$$ dd bs=$CONTENT_LENGTH | cgi-name -n_ -s_ > $tmp-name echo "Content-type: text/html" echo "" cat $apld/TOUROKU.HTML # </html>の後であるが、 # cat すればブラウザに文字が表示される。 # デバッグに便利 cat $tmp-name | sed -e 's/$/<br>/g' rm -f $tmp-* exit 0 $ cat TOUROKU.HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Style-type" content="text/css" /> <title>フォーム</title> </head> <body> 下のフォームにご記入ください。 <form action="./TOUROKU.CGI" method="POST" style="border:1px solid black"> 姓 <input type="text" name="FAMILY_NAME" /> <br /> 名 <input type="text" name="GIVEN_NAME" /> <br /> 年齢 <select name="AGE"> <option value="20">20 代</option> <option value="30">30 代</option> <option value="40">40 代</option> </select> <input type="submit" /> </form> </body> </html> $ cat namefile place tokyo country japan ---------------------------------------------------------------
以下はシンプルに実行した例です。
--------------------------------------------------------------- $ run-cgi TOUROKU.CGI namefile ---------------------------------------------------------------
標準出力には出力が、エラー出力にはログが出力されます。
以下はエラー出力を捨てる例です。
--------------------------------------------------------------- $ run-cgi TOUROKU.CGI namefile 2>/dev/null ---------------------------------------------------------------
以下はエラー出力を errlog に保存する例です。
--------------------------------------------------------------- $ run-cgi --log errlog TOUROKU.CGI namefile ---------------------------------------------------------------
以下は18行目まで実行する例です。(実行後 tmp-name が作成されるので、中身が確認できる)
--------------------------------------------------------------- $ run-cgi --log errlog --var tmp=tmp TOUROKU.CGI namefile 1-18 $ cat tmp-name place tokyo country japan ---------------------------------------------------------------
以下は20~23行目まで実行する例です。tmp-nameは既に存在してるので、直前の –var で設定した tmp を変えなければ、次の処理を続けて実行できます(runを使った一般的な開発手順)。
--------------------------------------------------------------- $ run-cgi --log errlog --var tmp=tmp TOUROKU.CGI namefile 20-23 Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> ....... ---------------------------------------------------------------
以下は、CGIスクリプトの最後まで実行した例です。
--------------------------------------------------------------- $ run-cgi --log errlog --var tmp=tmp TOUROKU.CGI namefile 20-32 ---------------------------------------------------------------
なお、run-cgiがどのように動いているか疑問に感じたら、–debug オプションを使って下さい。 run-cgiは実行前に引数のシェルスクリプトを編集して(例えばオプションに「20-23」を付けたら20~23行目以外は無効化したシェルスクリプトを/tmpに作成します)、それを実行しています。–debug オプションを付けるとスクリプトは実行されず、run-cgi が書き換えたそのスクリプトが表示されます。
$ run-cgi --log errlog --var tmp=tmp --debug TOUROKU.CGI namefile
Version and Edition
Version : Thu Jan 16 19:24:23 JST 2020
Edition : 1
© 2021 Universal Shell Programming Laboratory site