我正在从Java程序执行一个shell脚本。我已经使用运行时类实现了它。下面是我实现的代码从java代码运行shell脚本并传递参数
final StringBuilder sb = new StringBuilder("test.sh");
sb.append("/path to/my/text file");
final Process p = Runtime.getRuntime().exec(sb.toString());
这里sb是字符串缓冲区对象,我追加我的参数并在exec方法中使用它。但问题是我通过参数“/路径/我/文本文件”被认为是4个参数
/path
to
/my/text
file
但是,如果在运行shell作为test.sh“/路径/我/文本文件”,这被视为单一参数。我如何使用Java代码实现相同的功能,我需要将空间视为单一参数来考虑此路径。任何请求都会非常可观。
为什么有2个参数“/ path”和“/ my/text file”?不应该是新的ProcessBuilder(“test.sh”,“/ path to/my/text file”) – Mojoy
不,每个参数必须是分开的,否则它们将作为单个参数发送到进程,这就是为什么最后一个参数不需要在引号中转义 – MadProgrammer