groovy" ..." .execute()适用于Windows但在Linux上失败

时间:2017-09-23 09:02:29

标签: linux groovy

虽然这行在我的linux盒子上的windows上正常工作,但它返回退出代码1。

"gnuplot -e \"set output '${imageFile.toString()}'; filename='${dataFile.toString()}'; ${args}\" \"${plotFile.toString()}\"".execute()

但是,如果我从终端执行此操作一切正常。

gnuplot -e "set output '/tmp/hrp-current.jpg'; filename='/tmp/a731265b-3736-4bb9-acf4-b92c1a09b999.csv'; " "/tmp/hrp/build/groovy/../gnuplot/hrp-current.gnuplot"

我在这里缺少什么?它在某种程度上与gnuplot写入文件的事实有关,因为`some_command> some.file"在退出代码1的Linux上也会失败,而它在Windows上运行正常。

2 个答案:

答案 0 :(得分:1)

字符串上的

.execute()只是在空格上分割。您也不需要引用params来执行(您需要为shell执行此操作)。因此,执行一个params列表:

["gnuplot", "-e", "set output '${imageFile.toString()}'; filename='${dataFile.toString()}'; ${args}", plotFile.toString()].execute()

答案 1 :(得分:0)

确实是一些文件写入问题所以我需要gnuplot将其outout传递给stdout然后从我的groovy脚本中使用它来读取输出流然后将其保存到文件中:

def out = new ByteArrayOutputStream()
def err = new ByteArrayOutputStream()
process.waitForProcessOutput(out, err)