2009-04-24 9 views

答えて

23

トリックは、リストを使用していた:リストを使用して

println(['ls', '/tmp/folder with spaces'].execute().text) 
+1

コマンドが動的に生成されるか、ユーザーに求められた場合、この解決策は機能しません。確かに、引用符を数えるのが難しい解析ではありません... – Uberto

-4

スペースをエスケープしようとしましたか?

println 'ls /tmp/folder\ with\ spaces'.execute().text 
+0

はい、機能しませんでした。 –

-2

は私には不格好なビットを感じています。

これは、仕事をするだろうが:

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"'); 

唯一の欠点は、すべての引数の前後に引用符を置く必要があり、私はそれと一緒に暮らすことができます!

0

申し訳ありませんが、上記のトリックのどれも私のために働いていません。 この恐ろしいコードは、唯一のものです。

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 
関連する問題