如何在getopt类中给出optarg值b *

时间:2013-10-01 11:09:49

标签: java getopt

朋友们,

  

gnu.getopt.Getopt.jar

有一些问题,当我给b *作为选项参数然后它作为bin时,我遇到了一些问题

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 'p'://To set the pattern
            String pattern = g.getOptarg();
            hFlag = true;
            break;

        case '?':
            usage("Invalid option" + opt + " option");
            break;
    }
}

当我指定-p "b*"时,它会返回bin,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

shell(我怀疑你使用Linux,对吗?)将b*文字解析为bin(当前工作目录中必须有一个名为bin的目录),因为它被视为通配符

根据您使用的shell,您必须转义星号...例如在bash中,使用

-p b\*

将它转换为星号而不是由shell解析