我試圖從Groovy腳本運行復合shell命令。這是其中一個命令,您將其與「& &」分開,以便第二個命令在第一個命令失敗時不會運行。無論出於何種原因,我都無法使它工作。我用的是:從Java/Groovy運行復合shell命令
println "custom-cmd -a https://someurl/path && other-cmd -f parameter".execute([], new File('/some/dir')).text
外殼保持曲解命令拋出類似的錯誤「定製CMD -f選項無效」這就像有人忽略的「& &」。我也嘗試過使用分號,但並不幸運。我嘗試使用直接的Java API Runtime.getRuntime()。exec()並將命令分割成數組。我嘗試在單引號中包裝命令並將其提供給'/ bin/sh -c',但沒有任何效果。
如何從Java運行復合shell命令?我知道我過去做過這件事,但今天我無法弄清楚。
也許你需要轉義&&。 –
[如何正確調用groovy中的shell命令]的可能重複(http://stackoverflow.com/questions/12512919/how-to-call-shell-commands-from-groovy-correctly)。你不能像&& <|那樣使用「shellism」作爲命令。使用'-c'並將其作爲_one_參數傳遞(最簡單的方法是由字符串數組完成,如果引用變得棘手) – cfrick