[英]Apache Commons CLI : Getting list of values for an option
對於CLI,我需要傳入一個int數組作為特定選項的輸入。
示例 - 以下命令將接受customerIds數組並執行某些操作。
myCommand -c 123 124 125
我使用Apache commons CLI實現了CLI,我使用getOptionValues(“c”)來檢索此數組。
問題是,這只返回數組中的第一個元素,即[123],而我期望它返回[123,124,125]。
我的代碼的精簡版本,
CommandLine cmd;
CommandLineParser parser = new BasicParser();
cmd = parser.parse(options, args);
if (cmd.hasOption("c")){
String[] customerIdArray = cmd.getOptionValues("c");
// Code to parse data into int
}
有人可以幫我在這里找出問題嗎?
我想在這里添加這個作為@Zangdak的答案,並在同樣的問題上添加我的發現。
如果不調用#setArgs(int)
則會發生RuntimeException。 當您知道此選項的確切最大參數量時,請設置此特定值。 當此值未知時,類Option具有常量: Option.UNLIMITED_VALUES
這將改變gerrytans對以下內容的回答:
Options options = new Options();
Option option = new Option("c", "c desc");
// Set option c to take 1 to oo arguments
option.setArgs(Option.UNLIMITED_VALUES);
options.addOption(option);
您必須設置該選項可以采用的參數值的最大值,否則它假定該選項只有1個參數值
Options options = new Options();
Option option = new Option("c", "c desc");
// Set option c to take maximum of 10 arguments
option.setArgs(10);
options.addOption(option);
看起來我對派對來說有點晚了但是apache commons cli已經發展了,現在(至少在1.3.1中)我們有了一種新方法來設置可以有無限數量的參數
Option c = Option.builder("c")
.hasArgs() // sets that number of arguments is unlimited
.build();
Options options = new Options();
options.addOption(c);
您必須指定兩個參數setArgs
和setValueSeparator
。 然后你可以傳遞一個參數列表,如-k=key1,key2,key3
。
Option option = new Option("k", "keys", true, "Description");
// Maximum of 10 arguments that can pass into option
option.setArgs(10);
// Comma as separator
option.setValueSeparator(',');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.