Je veux copier des fichiers texte et les fichiers texte de src/
à dst/
Groovy exécuter « cp * » commande shell
groovy:000> "cp src/*.txt dst/".execute().text ===> groovy:000>
Vous pouvez voir la commande exécute w/out erreur mais le fichier src/test.txt
ne soit pas copié à dst/
Cela échoue aussi:
groovy:000> "cp src/* dst/".execute().text ===> groovy:000>
Mais ...
"cp src/this.txt dst/".execute().text
fonctionne
Aussi,
"cp -R src/ dst".execute().text
fonctionne
Pourquoi la dose la wild card semblent provoquer ma commande échouer en silence?
Je pense que vous pouvez simplifier cela avec: commande = .... command.execute() Comme les tableaux comprennent également exécuter – TimM
La raison pour laquelle '" sh -c « cp src/* txt dst /. '' "' ne fonctionne pas parce que Groovy va interpréter un argument de chaîne entre guillemets avec des espaces comme arguments multiples. Donc, groovy est en train d'exécuter sh avec les arguments suivants: arg1 = -c, arg2 = 'cp, arg3 = src/* .txt, arg4 = dst /' Une telle commande résultera en une erreur "Chaîne entre guillemets non terminés". Vous avez la bonne solution, qui consiste à utiliser un tableau. En outre, @TimM a raison, vous pouvez simplifier ce qui précède à '[" sh "," -c "," cp src/*. Txt dst/"]. Execute()' – BennyFlint
Si vous construisez vos commandes dynamiquement le solution avec sh -c et un tableau est la meilleure solution. Faites simplement: def commande = (commande generate ici) def proc = ["sh", "-c", commande] .execute() – henrik