cgibashopts
1.0.0
CGIBASHOPTSは、バイナリファイルのアップロードであっても、Bash Shell Web CGIスクリプトのWebフォームパラメーターを解析するための小さくて高速な純粋なBashライブラリです。制限なしで自由に使用できます(MITライセンス)。 (c)Colas Nahaboo 2017
cgibashoptsをコピーします。例:as /usr/local/bin/cgibashoptssource /usr/local/bin/cgibashoptsまたは. /usr/local/bin/cgibashoptsfoo (HTMLページ: <input type=text name=foo> )は、シェル環境変数$FORM_fooの値として見つけることができますトラブルシューティング:
tests/tewiba -vを実行して、テストスイートが問題を検出するかどうかを確認します。bash 、 grep 、 sed必要です。これをテストするには、 grep -P . /dev/null 、エラーが発生しないでください。そうした場合は、 MacOS 、Busybox、FreeBSD、BSD、SYSV誘導体など、デフォルトでGNUユーティリティを使用しないUNIXのようなシステムにインストールする必要があります。bash 、 coreutils 、 grep 、 sedのパッケージをインストールする必要があります$FORMSにリストされています。例: echo "$FORMS" ==> foo bar gee 。パラメーター名は、HTML形式のさまざまなHTML要素のname属性によって指定されたものであるか、 wgetやcurlなどのコマンドを介して送信されます。パラメーター名は、bashの法的変数名でなければなりません:数字から始めるのではなく、英数字とアンダースコアです。fooという名前のHTMLフォーム要素の$FORM_foo 。<input type=file name=file1>などのフォーム要素を介して、cgibashoptsはパラメーター名( file1 )を変数$ formfilesに配置します。これは、受信したすべてのファイルパラメーター名のスペース分離リストです。アップロードされたファイルの実際の名前は変数値(ここでは$FORM_file1 )で見つけることができますが、ファイルの内容は$CGIBASHOPTS_DIRディレクトリの変数によって名前が付けられたローカルファイルにあります(ここでは$CGIBASHOPTS_DIR/file1 )cgibashopts_cleanスクリプトの最後に呼び出して、アップロード-nれたファイルを保存する一時ディレクトリ$CGIBASHOPTS_DIRを削除する必要があります。 cgibashoptsはtrap cgibashopts_clean 0を行うため、この関数はスクリプトの最後に自動的に呼び出されるため、自分でtrap 0使用しない限り、何もする必要はありませcgibashopts_clean 。trap 0を消去します。したがって、cgibashoptsを調達した後、トラップ0を設定しますfileの入力要素を使用している場合にのみ実際に必要ですcgibashopts_clean機能を自分で明示的に呼び出すことができます。そうすれば、それはもう必要ではなく、その後のトラップを自由に使用できます。$CGIBASHOPTS_DIRまたは関数cgibashopts_cleanを定義せず、trapを使用しません。注:これは、バージョン3以上でのみ利用できます。使用例: . cgibashopts -n/tmpになります。 cgibashoptionsは、 $CGIBASHOPTS_DIR変数に示されているcgibashopts $$ cgibashopts-files.$$CGIBASHOPTS_RELEASE 、リリースバージョンを保持し、使用されたCGIBASHOPTS Librayのセマンティックバージョン(例えば4.0.1、4.4.3)を使用します。CGIBASHOPTS_VERSION 、主要なバージョン番号(上記のCGIBASHOPTS_RELEASEの最初の整数、後方互換性を保持します。%XX +し、キャリッジリターンを削除するurldecode 。urlencode 。どちらもバイナリLinuxコマンドよりも高速です。$nlと$cr新しいラインとキャリッジリターン文字を保持しますparam関数を使用します。これは、それを使用した人(またはスクリプト)のためのBashlibと互換性のある利便性関数です。param 、 FORMSの値を出力しますparam foo FORM_fooの値を出力しますparam foo a string... FORM_fooの値を"a string..."に設定します。param -f $FORMFILESを印刷しますparam -f foo prints $FORMFILE_fooparam -f foo a string... FORMFILE_fooの値を"a string..."に設定します。 テストスイートが提供されます./tests/RUN-ALL-TESTSで実行できます。詳細については、ディレクトリtestsのreadme.mdを参照してください
このプロジェクトをコピーして強化することを歓迎し、バグレポート、フィードバック、提案を次のように提供します。
Content-TypeおよびContent-Disposition HTTPヘッダーのセパレーターとして理解されました。コンマも使用するために修正されました。 「Florin-Ctu」によって報告されたバグ#8および#9。CGIBASHOPTS_RELEASEを使用して、セマンティックバージョンに切り替えました