我使用CliBuilder解析一些命名参数(h,t,c,n,s):

static main(args) {

  // http://mrhaki.blogspot.com/2009/09/groovy-goodness-parsing-commandline.html
  // http://docs.groovy-lang.org/latest/html/gapi/groovy/util/CliBuilder.html
  def cli = new CliBuilder(usage: 'hl7-benchmark -[t] type -[c] concurrency -[n] messages -[s] ip:port')

  cli.with {
      h longOpt: 'help',        'Show usage information'
      t longOpt: 'type',        args: 1, argName: 'type',        'mllp|soap'
      c longOpt: 'concurrency', args: 1, argName: 'concurrency', 'number of processes sending messages'
      n longOpt: 'messages',    args: 1, argName: 'messages',    'number of messages to be send by each process'
      s longOpt: 'ip:port',     args: 2, argName: 'ip:port',     'server IP address:server port',                 valueSeparator: ':'
  }

  def options = cli.parse(args)

调用命令行如下所示:hl7-benchmark -t xxx -c yyy -n zzz -s aaa:bbb

我需要在末尾添加一个可选属性,但我不想将其命名为:

hl7-benchmark -t xxx -c yyy -n zzz -s aaa:bbb final_value_without_name

CliBuilder有可能吗? 我找不到任何示例。

谢谢!

===============>>#1 票数:2 已采纳

您可以简单地将其作为命令行的“ arguments ”部分获取:

def test(args) {
    def cli = new CliBuilder(usage: 'hl7-benchmark -[t] type -[c] concurrency -[n] messages -[s] ip:port')

    cli.with {
        h longOpt: 'help', 'Show usage information'
        t longOpt: 'type',        args: 1, argName: 'type',        'mllp|soap'
        c longOpt: 'concurrency', args: 1, argName: 'concurrency', 'number of processes sending messages'
        n longOpt: 'messages',    args: 1, argName: 'messages',    'number of messages to be send by each process'
        s longOpt: 'ip:port',     args: 2, argName: 'ip:port',     'server IP address:server port',                  valueSeparator: ':'
    }

    def options = cli.parse(args)
    def otherArguments = options.arguments()

    println options.t
    println options.c
    println options.n      
    println options.ss  // http://www.kellyrob99.com/blog/2009/10/04/groovy-clibuilder-with-multiple-arguments/#hide
    println otherArguments
}

test(['-t', 'xxx', '-c', 'yyy', '-n', 'zzz', '-s', 'aaa:bbb', 'final_value_without_name'])

上面给出:

xxx
yyy
zzz
[aaa, bbb]
[final_value_without_name]

如果希望在将参数置于选项之前时也正确解析该参数,则可以将stopAtNonOption设置为false,例如在CliBuilder参数中不带破折号

  ask by Pablo Pazos translate from so

未解决问题?本站智能推荐:

2回复

使用Groovy CLIBuilder的Grails脚本和传递参数?

我创建了一个非常简单的脚本,并希望将参数传递给脚本。 喜欢: 使用脚本: 我似乎在每次尝试中都失败了。 该脚本不断抱怨-n选项不存在。 当我调试脚本时,值args参数的值看起来像值已重新排列。 使用以下命令调用脚本时: 脚本内args的值是: Howd
1回复

groovy Clibuilder用法打印null

更多的审美问题,但为什么打印cli.usage()最后给出一个空? 使用groovy helloWorld.groovy -help输出
1回复

当选项不是第一个参数时,使用Groovy的CliBuilder获取选项错误

我的问题是:当我使用groovy MyScript.groovy -o mtest -f filetest传递脚本时,脚本可以获取-o选项。 但是当我更改选项的位置时。 groovy MyScript.groovy -f filetest -o mtest无法获得-o选项 为什么?
1回复

Groovy clibuilder仅显示第一个无效选项

当'stopAtNonOption'为false时,groovy会告诉您第一个未知的选项。 无论如何,有没有列出所有未知选项而不是第一个? 实际 预期
2回复

Groovy CliBuilder:只考虑最后的LongOpt

我正在尝试使用groovy CliBuilder来解析命令行选项。 我正在尝试使用多个长选项,而不是一个简短的选项。 我有以下处理器: 根据groovy文档,当我希望它忽略短选项名称并仅使用长选项名称时,我应该能够为选项使用多个“_”值。 根据groovy文档:
2回复

Groovy CliBuilder,如何识别错误的参数?

我正在学习Groovy CliBuilder,我发现它很棒,除了,我不知道如何识别错误的论点。 请考虑以下示例代码: 如果我用例如-p调用我的脚本,这是一个无效的选项,没有任何反应。 同样,如果我在选项后添加参数,也不会检测到它们。 如何检测并发出错误信号? 另外,一个小
1回复

Groovy CliBuilder:是否定义了任何方法?

我是Groovy的新手。 有关在CliBuilder中找到的代码的非常简单的问题。 http://docs.groovy-lang.org/latest/html/gapi/index.html?overview-summary.html CliBuilder类的行为就像知道我们
1回复

如何创建通过未知选项传递的Groovy CliBuilder?

我有以下内容: 我希望能够通过以下方式调用它: 这样就不会产生解析错误,而不必在接受的选项列表中添加--unknown-option,并且同时设置了known-option-0和known-option-1。 如果我设置: 没有发出错误,但是: 我如何才能解
1回复

Groovy CliBuilder多个参数没有逗号

使用Groovy的CliBuilder ,可以提供多个参数,如下所述: http://marxsoftware.blogspot.com/2012/12/groovy-multiple-values-single-option.html 来自以上链接的示例: 但是,这意
2回复

在CliBuilder中使用with的意外行为

给定一个脚本test.groovy 当我运行groovy test.groovy ,输出为 为什么第一条输出行为null ? 这是我的groovy --version信息: