Ich fange gerade mit Groovy an. Ich konnte nirgendwo Beispiele finden, wie man mit Argumenten für ein Groovy-Skript umgeht, und habe diese Methode selbst gehackt. Es muss einen besseren Weg geben, dies zu tun? Wenn ja, suche ich diesen besseren Weg, da ich wahrscheinlich das Offensichtliche übersehen habe.
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")
Am einfachsten ist es, nur
this.args
ein Array zu verwenden, z.test.groovy
println this.args[0]
Anruf:
C:>groovy test this
Ausgabe:
this
quelle
Versuche dies:
quelle
Es ist Java sehr ähnlich und Sie können dieselbe Java-Syntax verwenden. Zum Beispiel.
class TestExecutor { public static void main(def args) { println("Printing arguments"); for(String arguments : args) { println (arguments); } } }
Führen Sie es aus und Sie sollten die Argumente gedruckt sehen
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
Beachten Sie auch, dass Sie Argumente erhalten können, wenn Sie keine Hauptmethode oder eine wie im obigen Beispiel angeben,
args[i]
aber Sie können den Namen des Arrays ändern (wieder dasselbe wie Java). Sie können also so etwas wie -public static void main(def argsNew) { println("Printing arguments"); for(String arguments : argsNew) { //using args in above for loop will throw error println (arguments); } }
Punkt ist, dass es nicht etwas ist, das fest codiert ist. Schließlich können Sie, wie in einer anderen Antwort vorgeschlagen, CliBuilder immer für die intelligente Analyse verwenden. Aber auch hier wird es intern verwendet
def options = cli.parse(args)
.quelle
args
auf die mit args [i] übergebenen Argumente zugreifen können, wenn Sie keine Hauptmethode oder eine Methode mit einem Arraynamen in Argumenten angeben . Aber wenn Sie den Array - Namen von in Argumenten ändernmain(def args)
zumain(def argsNew)
denen darf man keinen Zugriff mehr Argumente übergeben , wieargs[i]
Sie zu verwenden habenargsNew[i]
wie im Code oben erwähnt snipped.Wenn Sie Ihr Skript mit
--compile-static
oder--type-checked
option ausführen , wird dieargs
Variable nicht angezeigt und die Kompilierung gibt daher einen Fehler aus:Ich mache oben im Skript gerne Folgendes:
import groovy.transform.Field @Field String[] args = binding.getVariable('args') as String[]
Dies wird
args
als globale Variable verfügbar gemacht, die an einer beliebigen Stelle im Skript verwendet werden kann.Verweise:
https://stackoverflow.com/a/53783178/2089675
https://groovy-lang.org/structure.html#_variables
quelle