パラメータ付きブロック[-abc]の単一文字スイッチ

パラメータ付きブロック[-abc]の単一文字スイッチ

foo3つの単一文字スイッチabおよび必要なコマンドがあるとしますc。これらのスイッチはすべてさまざまなオプションで利用できます。

つまりfoo -a opt1 -b opt2 -c opt3

スイッチが単一のブロックにある場合、何が起こりますか(または発生する必要がありますか?)

つまりfoo -abc opt1 opt2 opt3

何が起こるかについての標準的な慣行はありますか(つまり、cgets、gets、エラーの発生など)、それともそれを解釈するのがプログラムによって異なりますか?opt1 opt2 opt3abc opt1 opt2 opt3

ベストアンサー1

使用されたプログラムでパラメータを承認するgetopt()と、パラメータを承認し、オプションではなく、を承認します。パラメータが許可されていない場合、動作はパラメータが許可されているかどうかによって異なります。-afoo -abc opt1 opt2 opt3-abcopt1opt2opt3-a-b-c

これPOSIXの説明getopt()この点については比較的明確です。

このオプションが引数を取る場合、選択項目のインポート( ) は変数を設定する必要がありますオプションパラメータ次のようにオプション・パラメーターを指します。

  1. オプションが要素が指す文字列の最後の文字である場合精液、その後オプションパラメータ次の要素を含める必要があります精液、...
  2. そうでなければ、オプションパラメータこの要素のオプション文字の後に続く文字列を指す必要があります。精液...

しかし、それは別の方法で作業を行うプログラムがないかもしれないという意味ではありません。引数を渡す伝統的な方法は、tarすべてのフラグをパッケージの最初のコマンドライン引数に入れ、すべての必須引数を次のコマンドライン引数のオプションに順番に入れることです。

この例ではFreeBSD タールマニュアル:

tar tbf 32 file.tar

andbフラグは引数を受け入れます。ここではandfです。もちろん、このパターンはパラメータが次のような点で非常にユニークです。32file.tarいいえ前にダッシュがあります。ダッシュを使用するとgetopt- と同様の解析が行われます。これは、tar xfvtar -xfvが異なることを意味します(-f引数が必要なためです)。

-abcもちろん、一部のプログラムは完全な単語で構成されたオプションを使用しますが、まだダッシュで始まるため、問題のプログラムがわからない場合は、オプションが1つであるか、3つのオプションがあるのか​​、それともパラメータがあるものかを知ることはできません。長いオプションの前にGNUスタイルのデュアルダッシュを使用すると、少なくとも区別が明確になります。

おすすめ記事