ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- コマンドオプションの解析
set -– ` getopt optstring $ * `
getopts コマンドが、 getopt に取って代わります。詳細は、 以下の「注意事項」の項を参照してください。
getopt は、シェルプロシージャによる解析を容易にするために コマンド行のオプションを分解し、 各オプションが正当であるかどうかの確認に使用します。optstring は、 認識されるオプションの文字列です。getopt(3C) を参照してください。オプション文字のあとにコロン (:) が付いている場合は、 そのオプションに引数があるとみなされます。コロンと引数の間は、 スペースで区切られていても、区切られていなくてもかまいません。特殊なオプション – – は、 オプションの終わりを表すのに使用されます。 このオプションを明示的に使用すると getopt はこれを認識し、 省略された場合には getopt がこれを生成します。いずれの場合でも、 getopt はオプションの終わりにこの特殊オプションを付けます。シェルの位置パラメータ ($1 $2 . . . ) が再設定されて、各オプションの前に - が付き、各オプションはそのオプションの位置パラメータに入ります。各オプション引数も、同様にその引数の位置パラメータに入るように解析されます。
例 1 コマンド引数の処理
次の部分コードに、 オプション -a または -b 、および引数の必要なオプション -o を使用するコマンドについて、 引数の処理例を示します。
set -- `getopt abo: $*` if [ $? != 0 ] then echo $USAGE exit 2 fi for i in $* do case $i in -a | -b) FLAG=$i; shift;; -o) OARG=$2; shift 2;; --) shift; break;; esac done
このコードは、 次のコマンドすべてを同一内容として受け入れます。
cmd -aoarg filename1 filename2 cmd -a -o arg filename1 filename2 cmd -oarg -a filename1 filename2 cmd -a -oarg -- filename1 filename2
属性についての詳細は、attributes(5) を参照してください。
|
Intro(1), getopts(1), getoptcvt(1), sh(1), shell_builtins(1), getopt(3C), attributes(5)
getopt は、 optstring に含まれていないオプション文字を検出すると、 標準エラー出力に エラーメッセージを表示します。
getopt は、次のメジャーリリースではサポートされません。このリリースにおいては、 変換ツール getoptcvt が提供されています。詳細については、getopts(1) および getoptcvt(1) を参照してください。
オプションを再走査する際は、 optind に 1 を再設定してください。
getopt は、オプションに続くオプション引数を、 スペースおよび引用符で区切って指定できるという コマンド構文標準規則 8 の一部をサポートしません ( Intro(1) 参照)。たとえば、次のように指定します。
cmd -a -b -o "xxx z yy" filename
は、正しく処理されません。この不完全性を正すためには、 getopt コマンドの代わりに getopts コマンドを使用してください。
オプション引数を持つあるオプションに、optstring で示されているオプションの 1 つと同じ値が続いている場合 (前述の「使用例」の項を参照。ただし、次のコマンド行を使用する場合)、
cmd -o -a filename
getopt は、常に -a を -o のオプション引数として扱うので、 a はオプションとして認識されません。この場合、 この例の for ループは、filename 引数を通り越してシフトします。