如何捕获传递给Groovy脚本的参数?

我刚刚开始使用Groovy。 我找不到任何有关如何处理Groovy脚本的参数的例子,所以我自己砍掉了这个方法。 必须有更好的方法来做到这一点? 如果是这样,我正在寻找这个更好的方法,因为我可能忽略了明显的。

import groovy.lang.Binding; Binding binding = new Binding(); int x = 1 for (a in this.args) { println("arg$x: " + a) binding.setProperty("arg$x", a); x=x+1 } println binding.getProperty("arg1") println binding.getProperty("arg2") println binding.getProperty("arg3") 

如果您想获得更高级的parsing,而不是仅仅获取参数,则可以使用Groovy CliBuilder来帮助您。 它可以帮助您使用命令行标志,可选参数和打印使用说明。

签出CliBuilder的Javadoc或MrHakis的post 。

抱歉提问。 我只是想通了:

 println args[0] println args[1] println args[2] 

最简单的就是将this.args用作数组,例如:

test.groovy

 println this.args[0] 

呼叫:

 C:>groovy test this 

输出:

 this 

它非常类似于Java,你可以使用相同的Java语法。 例如。

 class TestExecutor { public static void main(def args) { println("Printing arguments"); for(String arguments : args) { println (arguments); } } } 

运行它,你应该看到打印的参数

 C:\Users\athakur\Desktop>groovy TestExecutor.groovy test1 test2 test3 Aug 16, 2014 11:47:56 AM org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule newModule WARNING: Module [groovy-nio] - Unable to load extension class [org.codehaus.groo vy.runtime.NioGroovyMethods] Printing arguments test1 test2 test3 

另外请注意,如果你不提供main方法或者像上面的例子那样提供,那么你可以得到args[i]参数,但是你可以改变数组的名字(和java一样)。 所以你可以有这样的东西 –

 public static void main(def argsNew) { println("Printing arguments"); for(String arguments : argsNew) { //using args in above for loop will throw error println (arguments); } } 

指出这不是硬编码的东西。 最后,如其他答案中的build议,您始终可以使用CliBuilder进行智能分析。 但是同样在内部使用了def options = cli.parse(args)

尝试这个:

 args.each{println it}