長いオプションのみを使用してbashコマンドラインでgetoptを使用する方法は?

長いオプションのみを使用してbashコマンドラインでgetoptを使用する方法は?

getoptbashコマンドラインにコマンドがあります。getoptこれは短いオプション(例getopt -o axby "$@":)で機能し、短くて長いオプション(例getopt -o axby -l long-key -- "$@":)では機能しますが、今は必要です。ただ長いオプション(つまり、短いオプションはまったく存在しません)ですが、コマンドはオプションを正しく解析できませgetopt -l long-key -- "$@"ん。それでは、コマンドを--long-keyどのように使用できますか?getoptただ長いオプション?それともこれは不可能ですか、それともコマンドのバグですかgetopt

ベストアンサー1

getopt短期的なオプションがなくても大丈夫です。しかし、短期的なオプションはないと言うべきです。これはマニュアルの珍しい構文です。

最初の部分にno-oまたはoptionがない場合、--options2番目の部分の最初の引数は短いオプション文字列として使用されます。

これがテストで起こるものです。これをオプションのリストで唯一のパラメータgetopt -l long-key -- --long-key fooと考えてください。使用--long-key-egklnoyfoo

getopt -o '' -l long-key -- "$@"

例えば

$ getopt -l long-key -o '' -- --long-key foo
 --long-key -- 'foo'
$ getopt -l long-key -o '' -- --long-key --not-recognized -n foo
getopt: unrecognized option '--not-recognized'
getopt: invalid option -- 'n'
 --long-key -- 'foo'

おすすめ記事