Programing

Groovy 스크립트에 전달 된 인수를 캡처하는 방법은 무엇입니까?

lottogame 2020. 11. 20. 08:22
반응형

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")

단순히 인수를 얻는 것보다 더 고급 파싱을 원한다면 Groovy CliBuilder를 사용하여 도움을 줄 수 있습니다. 명령 줄 플래그, 선택적 인수 및 사용 지침 인쇄에 도움이됩니다.

체크 아웃 CliBuilder 의 자바 독 또는 MrHakis의 포스트 그것에 대해.


질문해서 죄송합니다. 나는 그것을 알아 냈습니다.

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

가장 간단한 방법은 this.args배열 로 사용 하는 것입니다.

test.groovy

println this.args[0]

요구:

C:>groovy test this

산출:

this

이 시도:

args.each{println it}

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

또한 메인 메소드를 제공하지 않거나 위의 예에서와 같이 제공하면 인수를 얻을 수 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);
    }
}

요점은 하드 코딩 된 것이 아니라는 것입니다. 마지막으로 다른 답변에서 제안 했듯이 스마트 구문 분석을 위해 항상 CliBuilder사용할 수 있습니다 . 그러나 그것 역시 내부적으로 사용되었습니다 def options = cli.parse(args).

참고 URL : https://stackoverflow.com/questions/6367384/how-to-capture-arguments-passed-to-a-groovy-script

반응형