groovy - 如何从 CliBuilder 获取非选项参数?

标签 groovy

我有最简单的 groovy 脚本试图找出 CliBuilder。如何让 CliBuilder 为我提供超出选项的命令行参数?我的期望是像...这样的命令行调用

./hello.groovy -u robert Edward

...会产生类似...的输出

ROBERT EDWARD

来 self 的消息来源,例如...

#!/usr/bin/env groovy
cli = new CliBuilder(usage:'hello.groovy [-hu] [name ...]')
cli.with {
  h longOpt: 'help', 'Show usage information'
  u longOpt: 'upper', 'uppercase eachg name'
}
options = cli.parse(args)
if(!options) {
  throw new IllegalStateException("WTF?!?")
}
if(options.h || options.arguments().isEmpty()) {
  cli.usage()
  return
}
println("$options.arguments()");

..但我无法弄清楚如何获得其余的参数,那些超出选项的参数。

最佳答案

如果 -u 只是一个标志,则不需要 -2:

#!/usr/bin/env groovy

cli = new CliBuilder(usage:'hello.groovy [-hu] [name ...]')
cli.with {
  h longOpt: 'help', 'Show usage information'
  u longOpt: 'upper', 'uppercase eachg name'
}
options = cli.parse(args)
if(!options) {
  throw new IllegalStateException("WTF?!?")
}
if(options.h || options.arguments().isEmpty()) {
  cli.usage()
  return
}

if(options.u) {
    options.arguments().each { println it.toUpperCase() }
}
else {
    options.arguments().each { println it }
}

关于groovy - 如何从 CliBuilder 获取非选项参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28487427/

相关文章:

unit-testing - 作为 Groovy Spock 方法的经典单元测试

groovy - 为什么不可变类在 Groovy 中是可变的?

groovy - 如何在 groovy 类中使​​用 Jenkins Job DSL Plugin 的闭包

java - 无法将 Grails 3.3 与 mysql 数据库连接

Groovy 和 Groovy++,它们有区别吗?

groovy - 在 Groovy 中使用 takeWhile 代替 findAll 或反之亦然有什么好处吗?

Groovy 在评估没有前导零的十进制值上的关系运算符时提示意外标记

groovy - 如何从 Groovy 中的 MetaClass 方法引用 GroovyObject 实例?

grails - Grails 交互模式中的静态字符串

grails - 如何系统地添加(装饰)一些要记录的数据