我正在尝试使用OptionBuilder.withArgName( "property=value" )
如果我的选项被称为状态,我的命令行是:
--status p=11 s=22
它只能成功识别第一个参数11,它无法识别第二个参数......
Option status = OptionBuilder.withLongOpt("status")
.withArgName( "property=value" )
.hasArgs(2)
.withValueSeparator()
.withDescription("Get the status")
.create('s');
options.addOption(status);
提前感谢您的帮助
答案 0 :(得分:8)
您可以使用传递的命令行选项的简单修改来访问传递的属性
--status p=11 --status s=22
或使用简短的语法
-s p=11 -s s=22
在这种情况下,您只需使用代码
即可访问您的媒体资源if (cmd.hasOption("status")) {
Properties props = cmd.getOptionProperties("status");
System.out.println(props.getProperty("p"));
System.out.println(props.getProperty("t"));
}
如果您需要严格使用语法,可以手动解析property = value对。 在这种情况下,您应该删除.withValueSeparator()调用,然后使用
String [] propvalues = cmd.getOptionValues("status");
for (String propvalue : propvalues) {
String [] values = propvalue.split("=");
System.out.println(values[0] + " : " + values[1]);
}