peliculas - groovy traduccion
groovy ejecutar con parĂ¡metros que contienen espacios (4)
¿Intentó escapar de los espacios?
println ''ls /tmp/folder/ with/ spaces''.execute().text
¿Cómo proporciono los argumentos que contienen espacios para el método de ejecución de cadenas en Groovy? Solo agregar espacios como uno en un shell no ayuda:
println ''ls "/tmp/folder with spaces"''.execute().text
Esto daría tres argumentos rotos a la llamada ls.
El truco fue usar una lista:
println([''ls'', ''/tmp/folder with spaces''].execute().text)
Lo siento, hombre, ninguno de los trucos anteriores funcionó para mí. Este pedazo de código horrible es lo único que pasó:
def command = ''bash ~my_app/bin/job-runner.sh -n " MyJob today_date=20130202 " ''
File file = new File("hello.sh")
file.delete()
file << ("#!/bin/bash/n")
file << (command)
def proc = "bash hello.sh".execute() // Call *execute* on the file
Usar una lista me parece un poco torpe.
Esto haría el trabajo:
def exec(act) {
def cmd = []
act.split(''"'').each {
if (it.trim() != "") { cmd += it.trim(); }
}
return cmd.execute().text
}
println exec(''ls "/tmp/folder with spaces"'')
Ejemplo más complejo:
println runme(''mysql "-uroot" "--execute=CREATE DATABASE TESTDB; USE TESTDB; //. test.sql"'');
El único inconveniente es la necesidad de poner comillas alrededor de todos tus argumentos, ¡puedo vivir con eso!