From: Minero Aoki Date: 2000-03-28T13:57:57+09:00 Subject: [ruby-dev:9522] Re: getopts.rb ----Next_Part(Tue_Mar_28_14:05:04_2000_893)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit あおきです。 In mail "[ruby-dev:9518] Re: getopts.rb" Wakou Aoyama wrote: > 青山です。 > 本当の問題はブール系の偽が nil から false に変更になった事で、これは > cur の方を修正して対応していたのですが、忘れていたようです。 > > この仕様変更はこれでも良いとは思いますが、変更になったという記述がどこ > にも無かったので、無関係なところを探ってしまったのでした。 そうですね。ドキュメントに明記することにしましょう。 ドキュメント見てみたら
の中に

が入ってたりしたので、 このさい全面的に書き直してみました。 あと、英語版がないみたいなので、ついでに英語版も書きました。 ------------------------------------------------------------------- あおきみねろう ----Next_Part(Tue_Mar_28_14:05:04_2000_893)-- Content-Type: Text/Html; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=ja.getopts.html getopts

getopts

オプションを解析し、$OPT_xxx に値を設定します。

書式

getopts(single_opts, *opts)

第一引数

-fや-x(=-fx)のような一文字のオプションの指定をします。 オプションが-fと-xの2つの場合は "fx"のように指定します。
また、このようなオプションがないときは必ずnilを指定して下さい。

第二引数以降

ロングネームのオプションや,引数を伴うオプションの指定をします。 --versionや--geometry 300x400、 -d host:0.0等がこれに該当します。
また、引数を伴う場合は末尾には":"をつけてください。 この例の場合、"version"、"geometry:"、 "d:"のようになります。

また,オプションが指定されなかった場合のデフォルトの値を持たせたい場合は、 ":"の後にそのデフォルトの値を指定します。 例えば、"geometry:80x25"のように指定します。

オプション解析

解析結果は全て "$OPT_指定した引数名" という名前のグローバル変数に 代入されることで示されます。 シングルオプションや引数を伴わないオプションが使用された場合はtrue、 使用されなかった場合はfalseがセットされます。

例:

    getopt( 'af', 'version' )
のように呼びだされ、実際の引数が
    -a --version
であった場合、
  • $OPT_a = true
  • $OPT_f = false
  • $OPT_version = true
のようにセットされます。返り値は 2 です。

その他のオプションに対しては、その引数がセットされます。 オプションが指定されなかった場合は、 デフォルトの値が指定されていればその値で、それ以外は nil です。

例:

    getopt( nil, 'd:', 'e:', 'geometry:80x25' )
のように呼びだされ、実際の引数が
    -d pengo:0.0
であったとすると、
  • $OPT_d = 'pengo:0.0'
  • $OPT_e = nil
  • $OPT_geometry = '80x25'
のようにセットされます。返り値は 1 です。

また、-もしくは--が指定されていたら、 それ以降の引数の解析を行ないません.

戻り値

実際にセットされたオプションの数を返します. 間違ったオプションが指定された場合はnilを返します.

Originated by

jammy@shljapan.co.jp

Modified by
Minero Aoki <aamine@dp.u-netsurf.ne.jp>

----Next_Part(Tue_Mar_28_14:05:04_2000_893)-- Content-Type: Text/Html; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=en.getopts.html getopts

getopts

analize options and set value to global variables $OPT_xxxx

Format

getopts(single_opts, *opts)

first argument

designate one character option like -f or -x(=-fx). For example, if options is "-f" and "-x", designate "fx". If application takes no character options, designate nil.

rest arguments

designate long option (like "--version") and/or options which takes value (like "-o hello"). If options takes its value, give a option name with ":".
For example, "version", "geometry:", "d:".

If options have default value, give an option name with ":DEFAULT_VALUE".
For example, "display:0.0", "geometry:80x25".

If getopts find - or --, getopts stops analizing.

Result

Results are set to global variables like "$OPT_OPTION_NAME". true or false for "flag" option (like "ls -l"), and a string or nil for "value" option (like "ruby -c test.rb").

Return Value

"getopts" returns a number of set options. If wrong option was given (from application user), returns nil.

Examples

when

    getopt( 'af', 'version' )
    ARGV = [ '-a', '--version' ]
result is:
  • $OPT_a = true
  • $OPT_f = false
  • $OPT_version = true return value is 2.

    when

        getopt( nil, 'd:', 'e:', 'geometry:80x25' )
        ARGV = [ '-d', 'pengo:0.0' ]
    
    result is:
    • $OPT_d = 'pengo:0.0'
    • $OPT_e = nil
    • $OPT_geometry = '80x25'
    return value is 1.

    Originated by

    jammy@shljapan.co.jp

    Modified by
    Minero Aoki <aamine@dp.u-netsurf.ne.jp>

    ----Next_Part(Tue_Mar_28_14:05:04_2000_893)----