2014-04-04 53 views
3

是否可以从命令行调用groovy脚本方法而不使用手动映射args [] - > method_to_call?是否可以从命令行调用groovy脚本方法?

例如,如果我有Groovy脚本 'MyGroovyScript.groovy',如:

def foo() { 

} 

def bar() { 

} 

我想调用foo()方法在命令行中,如:

groovy MyGroovyScript.groovy foo 
+0

而不是从groovy脚本调用方法您可以将方法的主体放入脚本本身 - 它将在脚本运行时被调用和处理。 – Opal

+0

@Opal是的,我知道,但这不是我想要的。 – XZen

+0

关于您正在寻找什么的更多细节? – Opal

回答

4

最近我相信你可以得到的是:

def foo() { 
    println "foo called" 
} 

def bar() { 
    println "bar called" 
} 

def woo(a, b) { 
    println "Woo called with a=$a and b=$b" 
} 

static main(args) { 
    if(args) { 
     "${args.head()}"(*args.tail()) 
    } 
} 

然后运行下面的命令给出以下输出:

$ groovy test.groovy foo 
foo called 

$ groovy test.groovy bar 
bar called 

$ groovy test.groovy woo tim yates 
Woo called with a=tim and b=yates 
+1

是的,但OP声明:“没有使用手动映射参数[] - > method_to_call” – Opal

+0

是的,这是_“最接近我相信你可以得到”_: - /它几乎是*自动的,比检查参数对于'foo'或'bar' ;-) –

+0

看起来不错,但仍然没有得到它是如何工作的:''$ {args.head()}“(* args.tail())'。无论如何,请尽量自行调查,谢谢! :) – XZen

相关问题