web-dev-qa-db-ja.com

getopt関数でoptstringを指定するにはどうすればよいですか?

Cのoptstring関数でgetoptを正しく使用する方法がわかりません。

その文字列はどのようにフォーマットする必要がありますか?文字が隣り合っていて、セミコロンで区切られている場合もあれば、2つのセミコロンで区切られている場合もあります。

どういう意味ですか?

22
bLAZ

これは単なる文字列であり、この文字列の各文字はオプションを表します。このオプションに引数が必要な場合は、オプション文字の後に:を付ける必要があります。

たとえば、"cdf:g"は、オプションcdf、およびgを受け入れます。 fには追加の引数が必要です。

コマンドラインのオプションは-optionのように見えるため、オプション-c-d-f argument、および-gを使用できます。

30
md5

getopt(3)のマンページはそれをかなり明確にします:

  • 文字列自体は、コマンドラインに表示できる有効なオプションを指定するために使用されます。
  • オプションの後に:が続く場合、そのオプションには必須パラメーターがあります。指定しないと、関数が失敗します。
  • オプションの後に::が続く場合、そのオプションにはオプションのパラメーターがあります。

オプションは1文字の識別子です。たとえば、aB:cD::のような文字列をoptstringとして指定すると、プログラムはオプションaBを必須パラメーター、c、およびDをオプションパラメーターとして使用することになります。

11

コロンの場合:isの後に文字または文字列が続く場合は、このオプションで引数が必要であることを意味し、コロンがない場合は引数がないことを意味します

詳細については、man 3 getoptまたは リンク または マンページ にアクセスしてください

2
Omkant