0
我想在参数后得到更多的optargs,但我不知道如何去做。我想打电话给我的程序,如如何使用optarg获取多个值?
./test -a first second -b third
我现在只能在参数-a之后获得一个值。当我尝试放置两个或更多时,avalue为空。
我的代码:
char *avalue = NULL;
char *bvalue = NULL;
while ((c = getopt (argc, argv, "a:b:")) != -1)
switch (c)
{
case 'a':
avalue = optarg;
break;
case 'b':
bvalue = optarg;
break;
case '?':
if (optopt == 'c')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf (stderr,
"Unknown option character `\\x%x'.\n",
optopt);
return 1;
default:
abort();
}
printf ("avalue = %s\nbvalue = %s\n",avalue, bvalue);
你不能那样做。 GNU getopt认为你的命令行与'test -a first -b third-second'没什么不同。充其量,你可以期待'测试 - 第一个 - 第二 - 第三个第三'工作。 – 2013-03-25 10:45:04
是不是有办法如何让这些值“非法”?该程序将被称为这样,所以我必须找到一种方法。 – 2013-03-25 10:52:42
我有一个包叫做'ngxgetopt'(下一代扩展getopt),它可以在'-a'之后配置为需要2个选项,等等。它旨在统一一组逆向和异常的命令行解析技术,同时尊重原来的调用约定。如果需要,请通过电子邮件与我联系(请参阅我的个人资料)。这不重要(1500行代码,150行标题,93 KiB gzipped tar文件);附带一个实质测试套件和关于选项约定的丰富文档。 – 2013-03-25 10:57:59