从带有空格的java脚本构建和执行bash脚本

时间:2012-03-31 11:27:53

标签: java linux bash unix

我正在创建一个java应用程序,它将是bash脚本的GUI ..

将使用该应用程序浏览脚本位置并输入其他2个参数..

并构建并执行命令..

所以执行部分​​将是这样的:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(scriptPath + parameter1 + parameter2);

如果脚本的位置中没有空格,该命令是否有效..

但是当它有空格时它会在到达第一个空格时停止。 它给了我" java.io.IOException:" exeption ..找不到文件..

我尝试用退格和空格替换空格..

scriptPath.replace(" ", "\\ ")

我也尝试在路径

之前和之后添加引号
"\"" + scriptPath + "\""

我已经一起试过了..

"\"" + scriptPath.replace(" ", "\\ ") + "\""

但他们都没有工作..

任何帮助将不胜感激..

问候..

2 个答案:

答案 0 :(得分:2)

请改用ProcessBuilder。它有一个构造函数,允许您将参数作为单独的字符串添加,并应处理空格。

答案 1 :(得分:2)

Runtime's exec(String) method只是将字符串拆分为空格;它并不了解任何引用。相反,您可以使用带有数组的exec(String[]) method,因此不必应用任何拆分逻辑:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(new String[] { scriptPath, parameter1, parameter2 });