Как захватить аргументы, переданные в 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")
Ответы
Ответ 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}