java - 从 java 代码运行 shell 脚本并传递参数

标签 java shell runtime.exec shell-exec

我正在从 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 方法中使用它。但问题是我传递的参数“/path to/my/text file”被认为是 4 个参数

/path
 to
/my/text
 file

但是如果在 shell 中作为 test.sh "/path to/my/text file"运行,它被作为单个参数。我如何使用 Java 代码实现相同的目的,我需要将此路径视为单个参数。任何请将是非常可观的。

最佳答案

使用ProcessBuilder ,这就是它的设计目的,让您的生活更轻松

ProcessBuilder pb = new ProcessBuilder("test.sh", "/path", "/my/text file");
Process p = pb.start();

关于java - 从 java 代码运行 shell 脚本并传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12812345/

相关文章:

java - 另一个 Java 事件问题

java - javax.xml.transform.Transformer行尾不再遵守系统属性“line.separator”

Java对如何排列 "if"语句感到困惑

linux - Debian Wheezy 7.5-用户 session 中未加载变量LD_LIBRARY_PATH

java - 在java程序中执行winzip命令

Java进程: read stdout and stderr of a subprocess in a single thread

java - 如何将类作为参数传递给方法,就好像它是动态变量一样?

linux - 查找一个字符串并替换该字符串的整行

java - 更改 Runtime.getRuntime().exec 进程上的进程组

shell - 在 shell 函数中 cat 一个文件