传递参数从java程序到bash脚本,用参数调用另一个java程序

Ber*_*era 1 java parameters bash arguments escaping

我想在我的java程序中执行一个shell脚本,传递一个参数如下:

Runtime.getRuntime().exec("./test.sh " + "\\\"param1\\\"\\\"param2\\\"\\\"param3\\\"");
Run Code Online (Sandbox Code Playgroud)

test.sh将调用另一个java程序传递字符串参数,如下所示:

another.jar \"param1\"\"param2\"\"param3\"
Run Code Online (Sandbox Code Playgroud)

最后,程序anther.jar将以这种格式解释参数

another.jar "param1""param2""param3"
Run Code Online (Sandbox Code Playgroud)

我有点混淆这种情况,因为在这种情况下,我无法正确处理逃脱字符.kkk

我在第一个命令中尝试了一些字符串格式,但是我没有得到正确的格式.

一些帮助就好了!

谢谢!

Jon*_*ust 5

使用ProcessBuilder.参数没有什么特别需要做的,它们只是涓涓细流.

//ProcessBuilder pb = new ProcessBuilder("test.sh", "param1", "param2", "param3");
ProcessBuilder pb = new ProcessBuilder("test.sh", "param1 " + "param2 " + "param3");
pb.start();
Run Code Online (Sandbox Code Playgroud)

在test.sh中:

java -jar program2 $1 # Or however you want to call it.
Run Code Online (Sandbox Code Playgroud)

在program2.java中

public static void main(String[] args)
{
   System.out.println(args[0]);
}
Run Code Online (Sandbox Code Playgroud)