次: Group options, 前: Invoking gengetopt, 上: Top
引数(argument)とは,CやC++プログラムにオペレーティングシステムから渡さ
れるargv
配列の要素です.
オプション(option)とは,-や--で始まる引数です.
値(value)とは,引数または引数の一部で,特定のオプションに関連付け られたものです(オプションは引数を受け付けなくてもかまいません).例えば 以下を考えます.
> ls --width=80
lsは一つの引数--width=80で呼び出され,それは値
80
を持つオプションです.一方以下を考えます.
> ls --width 80
lsは二つの引数で呼び出され,--widthはオプションで,
80
は値かもしれませんし,そうでないかもしれません.この状況では,
80
が前置されている--widthオプションに関聯する値として扱
われるか,ファイル名のリストとして扱われるかは,lsが
--widthオプションを構文解析する方法に依存します.
オプションの順番を指定することは,通常重要ではありません.
> ls -a -l > ls -l -a
両方とも正確に同じことを行います.
パラメータ(parameter)は,引数でオプションではありません.例えば以 下を考えます.
> cp --archive source dest
cpは,三つの引数で呼び出され,それはオプション
--archive,パラメータsource
,そしてパラメータ
dest
です.オプションとは異なり.パラメータの順序の指定は,通常重
要です.
> cp --archive --verbose source dest > cp --verbose --archive source dest > cp --archive source --verbose dest > cp --archive --verbose dest source
最初の三つのcpコマンドは同じことを行いますが,四番目のものは, 全く異なります.
gengetoptの初心者は,このセクションの残りを読まなくてもかまいません.オ プションの種類の詳細と,それらの構文解析に進んでいきます.
パラメータには,-で--で始めてもかまわないものがあるこ とに注意してください.特に,-や--で始まるすべて の引数はオプションです.以下を考えます.
> ls -- -file > tar -c -f - . > ../foo.tar
lsコマンドには二つの引数があります.最初のものは引数で,
--はlsは無視しますが,これで-file引数はパラ
メータとして解釈されます.tarコマンドは四つの引数があります.
-c引数は,tarにアーカイブを作成するよう伝えます.
-f引数は値を取り,それは-
で,tarにアーカイブ
を標準出力に書き込む用に伝え,四番目の引数.
は,tarにアー
カイブに含めるディレクトリを伝えます.(残りの二つの項目は>
と
../foo.tar
で,シェルにtarコマンドの出力をファイル
../foo.tarにリダイレクトするよう伝えます.tarコマンド
が見ることはありません.)
GNUの慣習では,-自身は常にパラメータとして解釈されますが,最初 の--自身は常に無視され,それ以降の全ての引数はパラメータとして 解釈されます.gengetoptは常にこの方法で動作します.
短いオプション(short option)は-で始まるオプションです. 前置するダッシュは含まれず,短いオプションは一文字の長さにする必要があ ります.
> ls -a -l -t --width=80
-a,-l,そして-tオプションは,すべて短いオプ ションです.複数の短いオプションは,一つに組み合わせてもかまいません.
> ls -alt --width=80
これは,上記の例と等価です.
長いオプション(long option)は,-や--で始まるオ プションです.前置される区切り文字(punctuation)は無視され,長いオプショ ンは,一文字以上の長さにしてもかまいません.
> ls --all -fs
lsコマンドは,二つの引数があります.それは,長いオプション --allと,短いオプションの組-fsです.
長いオプションに短いオプションの同義語を持たせる必要はありません.結局, ccのような複雑なプログラムでは,有効な短いオプション文字以上 の数の長いオプションがあります.短いオプションをすべてに割り当てること は不可能でしょう.短いオプションが推奨されていますが,長いオプションの 同義語を持たせることは必須ではありません.
長いオプションは,省略しても不明瞭にならない限り,省略してもかまいませ ん.gengetoptは,明確な省略語を同義語として自動的に処理します.
短いオプションは,長いオプションのように値を持たせてもかまいませんが, いくつかの短いオプションが一つの引数に纏められている場合,最後のものだ けが値を持つことができます.長いオプションの引数の値は等号で分離されて いて,短いオプションの引数の値は分離されていません.
> ls --width 60 # ok, value is "60" > ls --width=60 # ok, value is "60" > ls -w60 # ok, value is "60" > ls -w 60 # ok, value is "60" > ls -w=60 # unexpected, value is "=60" > ls -T7 -w60 # ok, value for -T is 7, value for -w is 60 > ls -T7w60 # unexpected, value for -T is "7w60", no -w at all
必須のオプション(required option)は必要で,そうでなければエラーと なります.
複数回オプション(multiple option)とは,一度以上コマンドラインに書 いてもかまわないオプションです.gengetoptは,複数回オプションに対して, 小さな配列を作成します(複数回オプションの詳細はMultiple Options).