2013-12-21 53 views
2

爲什麼提交消息中的空格導致p2失敗?當命令有空格時執行groovy進程的問題

def envp = null 
def repoDir = File.createTempFile("test","txt").getParentFile() 

Process p = "git init".execute(null, repoDir) 
p.waitForProcessOutput(System.out, System.err) 

///////////// 

println "Commit1 start" 
Process p1 = "git commit --allow-empty -m \"Commit1\"".execute(null, repoDir) 
p1.waitForProcessOutput(System.out, System.err) 
println "Commit1 done" 


///////////// 

println "Commit2 start" 
Process p2 = "git commit --allow-empty -m \"Commit number 2\"".execute(null, repoDir) 
p2.waitForProcessOutput(System.out, System.err) 
println "Commit2 done" 
+0

你嘗試過'''git commit --allow-empty -m'提交編號2'''?用單引號。 – dmahapatro

+0

是的。試過也。沒有工作。我在Mac Mavericks上 – DarVar

回答

3

下面的代碼可以解決你的問題:

println "Commit2 start" 
Process p2 = ["git", "commit", "--allow-empty", "-m \"Commit number 2\""].execute(null, repoDir) 
p2.waitForProcessOutput(System.out, System.err) 
println "Commit2 done 

使用數組(而不是字符串)作爲報價,參數與 - 空間問題的變通方法記錄在這裏: http://groovy.codehaus.org/Executing+External+Processes+From+Groovy