ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- コマンドオプションを解析するために getopts に変換
/usr/lib/getoptcvt [-b] filename
/usr/lib/getoptcvt
/usr/lib/getoptcvt は filename 内のシェルスクリプトを読み取り、 getopt の代わりに getopts を使用できるように それを変換し、 その結果を標準出力に出力します。
getopts は、Bourne シェル組み込みコマンドの1 つであり、定位置パラメータの解析およびオプションの妥当性チェックに使用されます。sh(1) を参照してください。このコマンドは、コマンド構文標準規格 (Intro(1) のルール 3 ~ 10を参照) のうち、該当するルールすべてをサポートします。このコマンドは、getopt コマンドの代わりに使用してください。(「注意事項」の項を参照してください。)シェルの getopts 組み込みコマンドの構文を 次に示します。
getopts optstring name [ argument . . . ]
optstring には、getopts を使用するコマンドが認識できる オプション文字を入れなければなりません。 オプション文字の後にコロン (:) が付いている場合は、 そのオプションには 1 つまたは複数の引数があるとみなされます。オプションと引数の間は、 スペースによって区切られていなければなりません。
getopts は、呼び出されるたびに、次のオプションをシェル変数 name に入れ、処理すべき次の引数へのインデックスをシェル変数 OPTIND に入れます。シェルまたはシェル手続きが呼び出されるたびに、OPTIND の値は 1 に初期設定されます。
オプションにオプション引数が必要な場合、getopts はその引数をシェル変数 OPTARG に入れます。
不正なオプションが検出されると、? が name に入ります。
オプションの終わりが検出されると、getopts はゼロ以外の終了ステータスで終了します。特殊オプション -- を使用して、オプションの終わりを表すことができます。
デフォルトでは、getopts は定位置パラメータを解析します。getopts コマンド行に追加の引数 (argument . . .) が指定されると、getopts は定位置パラメータの代わりにその引数を解析します。
新しいコマンドはすべて、 Intro(1) で説明している コマンド構文標準規格に 従うようにするために、 定位置パラメータの解析、 および オプションが そのコマンドの有効なオプションであるかどうかの チェックに、 getopts または getopt を使用しなければなりません ( 以下の「注意事項」の項を 参照してください ) 。
次のオプションがサポートされています。
変換されたスクリプトを、 UNIX システムの旧リリースへ 移植可能にします。/usr/lib/getoptcvt は、filename 内のシェルスクリプトを変更し、変更後のシェルスクリプトを実行すると、 実行時に getopts と getopt のどちらを呼び出すか判別できるようにします。
例 1 コマンド引数の処理
次に示すシェルプログラムの一部分では、オプション -a または -b 、およびオプション引数の必要なオプション -o を使用するコマンドについて、引数の使用例を示します。
while getopts abo: c do case $c in a | b) FLAG=$c;; o) OARG=$OPTARG;; \?) echo $USAGE exit 2;; esac done shift `expr $OPTIND - 1`
例 2 同一内容のコード式
このコードは、 次のコマンドすべてを同一内容として受け入れます。
cmd -a -b -o "xxx z yy" filename cmd -a -b -o "xxx z yy" -filename cmd -ab -o xxx,z,yy filename cmd -ab -o "xxx z yy" filename cmd -o xxx,z,yy b a filename
getopts の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LC_CTYPE、LC_MESSAGES、および NLSPATH。
この変数は、次に処理すべき引数の索引として getoptcvt によって使用されます。
この変数は、オプションが引数を使用している場合に、引数を格納するために getoptcvt によって使用されます。
次の終了値が返されます。
optstring で指定した、または指定しなかったオプションが見つかりました。
オプションの並びの終わりを検出した、またはエラーが発生しました。
属性についての詳細は、attributes(5) を参照してください。
|
Intro(1), getopts(1), sh(1), shell_builtins(1), getopt(3C), attributes(5)
getopts は、 optstring に含まれていないオプション文字を検出すると、 標準エラー出力にエラーメッセージを表示します。
現在の実装においては、次のようにコマンド構文規格 (Intro(1) を参照) に従わない使用方法が認められていますが、このような使用方法は、将来、システムのリリースではサポートされないので、使用しないでください。前述の 「使用例」と同様に、-a および -b がオプションであり、-o はオプション引数を持つオプションとします。次の例では、ルール 5 (オプション引数を持つオプションは別のオプションと一緒にまとめることはできない) に違反しています。
example% cmd -aboxxx filename
次の例では、ルール 6 (オプション引数を持つオプションの後には、スペースがなければならない) に違反しています。
example% cmd -ab oxxx filename
シェル変数 OPTIND の値を変更したり、 異なる引数の集まりを解析したりした場合の 結果は不確定です。