Je viens juste de commencer avec Groovy. Je ne trouvais nulle part où que ce soit des exemples montrant comment gérer les arguments d'un script Groovy et j'ai donc piraté cette méthode moi-même. Il doit y avoir une meilleure façon de faire cela? Si tel est le cas, je cherche cette meilleure solution, car je passe probablement de côté l’évidence.
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")
Si vous souhaitez une analyse plus avancée que la simple obtention des arguments, vous pouvez utiliser Groovy CliBuilder pour vous aider. Il vous aide avec les indicateurs de ligne de commande, les arguments facultatifs et l’impression des instructions d’utilisation.
Commander CliBuilder Javadoc ou MrHakis post à ce sujet.
Désolé d'avoir posé la question. Je viens de le comprendre:
println args[0]
println args[1]
println args[2]
Le plus simple consiste simplement à utiliser this.args
sous forme de tableau, par exemple:
test.groovy
println this.args[0]
Appel:
C:>groovy test this
Sortie:
this
essaye ça:
args.each{println it}
Il ressemble beaucoup à Java et vous pouvez utiliser la même syntaxe Java. Par exemple.
class TestExecutor {
public static void main(def args) {
println("Printing arguments");
for(String arguments : args) {
println (arguments);
}
}
}
Exécutez-le et vous devriez voir les arguments imprimés
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
Notez également que si vous ne fournissez pas la méthode principale ou une méthode semblable à celle de l'exemple ci-dessus, vous pouvez obtenir les arguments sous la forme args[i]
, Mais vous pouvez modifier le nom du tableau (de nouveau identique à Java). Donc, vous pouvez avoir quelque chose comme -
public static void main(def argsNew) {
println("Printing arguments");
for(String arguments : argsNew) {
//using args in above for loop will throw error
println (arguments);
}
}
Le point étant que ce n'est pas quelque chose qui est codé en dur. Enfin, comme suggéré dans une autre réponse, vous pouvez toujours utiliser CliBuilder pour l'analyse intelligente. Mais là encore, il utilisait en interne def options = cli.parse(args)
.