2

オプション引数として「-」を指定する必要があります

Getopt クラス

私のコードは以下のとおりです

Getopt g = new Getopt("cm_log_parser", args, "i:s"); //-D to enable debug log


while((opt = g.getopt()) != -1)
{
    switch (opt)
    {
        case 'f'://To set file name(if above is not specified)
            fileNameWithPath = getAndCheckOptArg(fFlag, opt, g);
            fFlag = true;
            break;

        case 's'://To set the header
            String separator = getAndCheckOptArg(hFlag, opt, g);
            hFlag = true;
            breakk;
        case '?':
            usage("Invalid option" + opt + " option");
            break;
    }
}

引数で -s "-" として指定したいのですが、無効なオプションのようなエラーが表示されています。それを行う方法はありますか?

4

2 に答える 2

1

--Getoptには特別な意味があります

ユーザーは、特別な引数 "--" を単独で使用して、getopt() にコマンド ラインのスキャンを強制的に停止させることができます。「--」の前にあるすべての要素は、通常どおりスキャンされ、並べ替えられます。「--」の後の要素は、非オプションの argv 要素としてそのまま返されます。たとえば、「foo -a -- bar -d」は、オプション「a」の後に -1 を返します。optind は、非オプションの argv 要素として「foo」、「bar」、および「-d」を指します。「--」は getopt() によって破棄されます。

だから私はあなたがこれをやってのけることができないのではないかと心配しています.

于 2013-09-25T14:10:34.567 に答える
0

-s-(スペースなし)を使用してこれを行うことができる場合があります。Getopt がこれを許可するかどうかはわかりません。

于 2013-09-25T15:14:39.793 に答える