Подтвердить что ты не робот

Как захватить аргументы, переданные в Groovy script?

Я только начинаю с Groovy. Я не мог найти никаких примеров, как обрабатывать аргументы в Groovy script, и поэтому я сам взломал этот метод. Должен быть лучший способ сделать это? Если это так, я ищу этот лучший способ, так как я, вероятно, не замечаю очевидного.

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

Ответ 1

Если вам нужен более продвинутый синтаксический анализ, чем просто получение аргументов, вы можете использовать Groovy CliBuilder, чтобы помочь вам. Он помогает вам с флагами командной строки, необязательными аргументами и печать инструкции по использованию.

Оформить заказ CliBuilder Javadoc или MrHakis post об этом.

Ответ 2

Извините, что задал вопрос. Я просто понял:

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

Ответ 3

Проще всего просто использовать this.args как массив, например:

test.groovy

println this.args[0]

Вызов:

C:>groovy test this

Вывод:

this

Ответ 4

Он очень похож на 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).

Ответ 5

попробуйте следующее:

args.each{println it}