Использование списка кажется мне немного неуклюжим.
Это сделает работу:
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"')
Более сложный пример:
println runme('mysql "-uroot" "--execute=CREATE DATABASE TESTDB; USE TESTDB; \\. test.sql"');
Единственным недостатком является необходимость ставить цитаты вокруг всех ваших аргументов, я могу жить с этим!