本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (A~M) > g

getopts(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

getopts ― ユーティリティ (コマンド) オプションの構文解析

構文

getopts optstring name [arg ...]

説明

getopts は、パラメータのリストからオプションおよびオプションの引き数を読み出すのに使用されます。

getopts は、起動されるたびに 次のオプションの値を name オペランドにより指定されるシェル変数に、また処理される次の引き数のインデックスをシェル変数 OPTIND に代入します。 シェルが起動されると、必ず OPTIND は 1 に初期化されます。

オプションにオプションの引き数が必要な場合は、 getopts はそれをシェル変数 OPTARG に代入します。 オプションが見つからない場合または検索されたオプションに引き数がない場合、 OPTARG は設定されません。

optstring オペランドに含まれないオプション文字がオプション文字のあるべき場所で検索された場合、 name により指定されるシェル変数は疑問符 (?) 文字に設定されます。 この場合 optstring の最初の文字がコロン (:) ならば、シェル変数 OPTARG は検索されたオプション文字に設定されますが、出力を標準エラーには書き出しません。 それ以外の場合、シェル変数 OPTARG は設定されず、診断メッセージは標準エラーに書き出されます。 この状態は、引き数がアプリケーションを起動するように示される場合に検出されたエラーであると解釈されますが、 getopts 処理においてはエラーではありません。

オプションの引き数がない場合は以下のとおりです。

  • optstring の最初の文字がコロンの場合、 name により指定されるシェル変数はコロン文字に設定され、シェル変数 OPTARG は検索されたオプション文字に設定されます。

  • それ以外の場合、 name により指定されるシェル変数は疑問符文字に設定され、シェル変数 OPTARG は設定されず、また診断メッセージは標準エラーに書き出されます。 この状態は、引き数がアプリケーションを起動するように示される場合に検出されたエラーであると解釈されますが、 getopts 処理においてはエラーではありません。 前述のとおり診断メッセージは書き出されますが、終了ステータスはゼロです。

オプションの終端が出現すると、 getopts はゼロより大きな戻り値で終了します。 シェル変数 OPTIND は、最初の非オプションの引き数のインデックスか値 $# + 1 に設定されます。前者の場合、最初の -- 引き数は、その前に非オプションの引き数がなければ、 オプションの引き数になります。値 $# + 1 になるのは、非オプションの引き数がない場合です。 name 変数は、疑問符文字に設定されます。 オプションの終端を識別するのは、 特殊オプション --- から始まらない引き数、エラーの出現です。

シェル変数 OPTIND および OPTARG は、 getopts の呼び出し元に対してローカルであり、デフォルトではエクスポートされません。

name オペランドにより指定されるシェル変数 OPTIND および OPTARG は、現在のシェル実行環境に影響を与えます。

オペランド

以下のオペランドがサポートされています。

optstring  

getopts を起動するユーティリティにより認識されるオプション文字を含む文字列。 文字の後にコロン (:) がある場合、オプションには引き数があるものと判断します。このオプションの引き数は、別の引き数として指定されます。 アプリケーションでオプション文字とそのオプションの引き数を別々の引き数として指定する必要があります。 getopts は、引き数を必要とするオプション文字の後の文字を 1 つの引き数として解釈します。 明示的なヌルオプションの引き数は、 getopts の実行時に独自の引き数として指定されない場合は認識されません。 疑問符 (?) およびコロン (:) 文字は、アプリケーションでオプション文字として使用してはなりません。 英数字以外の他のオプション文字を使用すると、予期せぬ結果を引き起します。 オプションの引き数がオプション文字とは別の引き数として指定されない場合は、 OPTARG の値からオプション文字およびハイフン (-) が取り除かれます。 optstring の最初の文字は、 未知のオプション文字が指定されたり、あるいはオプションの引き数が指定されなかった場合の getopts の動作を決定します。

name  

getopts により検索されたオプション文字に設定されるシェル変数の名前

getopts は、デフォルトでは起動するシェルプロシージャに渡される位置パラメータを構文解析します。 args を与える場合、位置パラメータに代わり構文解析します。

多言語化対応

環境変数

以下の環境変数は、 getopts ユーティリティの実行に影響を与えます。

OPTIND  

処理する次の引き数のインデックスとして getopts により使用されます。

エラー

エラーが検出され、 optstring オペランドの最初の文字がコロン (:) でないときはいつでも、診断メッセージが不特定のフォーマットで次のような情報とともに標準エラーに書き込まれます。

  • 実行するプログラム名がメッセージ中に確認されます。 実行するプログラム名は、 getopts ユーティリティが実行される時のシェル特殊パラメータ 0 の値です。以下と等価な名前が使用されます。

    basename "$0"

  • optstring に指定されていないオプションが発見されると、このエラーが確認され、無効なオプション文字がメッセージ中に確認されます。

  • オプション引き数を必要とするオプションで、オプション引き数が発見されないと、このエラーが確認され、無効なオプション文字がメッセージ中に確認されます。

getopts は現在のシェル実行環境に影響を与えるため、一般にそれは組込みのシェルレギュラーとして提供されます。 サブシェルまたは次のいずれかのように別のユーティリティ実行環境で呼び出された場合、

(getopts abc value "$@") 
nohup getopts ... 
find -exec getopts ...\; 

それは呼び出し元環境のシェル変数に影響を与えません。

位置パラメータが変更されるとしても、シェル関数は OPTIND を呼び出しシェルと共有する点に注意してください。 引き数の構文解析に getopts を使用する関数では、開始時に OPTIND の値をセーブし、戻る前にリストアしなければなりません。 ただし、関数は呼び出しシェルの OPTIND を変更しなければならない場合もあります。

以下の例スクリプトでは、その引き数を構文解析して表示します。

aflag=
bflag=
while getopts ab: name
    do
        case $name in
        a)
                aflag=1;;
        b)
                bflag=1
                bval="$OPTARG";;
        ?)
                printf "Usage: %s: [-a] [-b value] args\n" $0
                exit 2;;
        esac
    done
if [ ! -z "$aflag" ] ; then
        printf "Option -a specified\n"
fi
if [ ! -z "$bflag" ] ; then
        printf "Option -b "%s" specified\n" "$bval"
fi
shift $(($OPTIND -1))
printf "Remaining arguments are: %s\n" "$*"

参照

getopt(1), ksh(1), sh-posix(1), sh(1), getopt(3C)

標準準拠

getopts: XPG4, POSIX.2

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.