我知道有很多关于从 Java 执行命令的帖子,但我就是无法让它工作。这就是我想要做的,我有一个 bash 脚本,它接收 2 个参数,可能有空格,也可能没有空格,然后从 Java 执行脚本并像这样传递参数(我用引号将参数括起来,并用反斜杠转义它们):
String cmd = "/opt/myScript \"/opt/myPath1\" \"/opt/myPath2 with spaces\"";
Runtime rt = Runtime.getRuntime();
rt.exec(cmd);
我还尝试使用 ProcessBuilder
类,如下所示:
String myScript = "/opt/myScript";
String myArg1= "/opt/myPath1";
String myArg2 = "/opt/myPath2 with spaces";
ProcessBuilder pb = new ProcessBuilder(myScript , myArg1, myArg2);
pb.start;
已成功接收不带空格的参数,但我对第二个参数仍有问题。
我认为 ProcessBuilder 类可以处理空格,但似乎我遗漏了一些东西。
我不确定它是否有什么关系,但以防万一,这是我的脚本:
#!/bin/bash
PATH=$PATH:$1
gnome-terminal --working-directory $2
$1
和 $2
是从 Java 发送的参数。
最佳答案
遇到同样的问题,最后解决了:
Runtime.getRuntime().exec(new String[]{"bash", "-c", <command with spaces>});
关于java - 执行 bash 脚本并从 java 传递带空格的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31712966/