【发布时间】:2025-12-01 17:55:01
【问题描述】:
try{
//String[] cmd = new String[]{"/bin/sh", "send.sh"};
//Process pr = Runtime.getRuntime().exec(cmd); //nothing happens
//Process p = Runtime.getRuntime().exec("send.sh"); //File not found
//Process p = Runtime.getRuntime().exec("bash send.sh"); //nothing happens
// ProcessBuilder pb = new ProcessBuilder("bash","send.sh");
// Process p = pb.start(); //nothing happens
}
catch(Throwable t)
{
t.printStackTrace();
}
通过这段代码,我试图启动一个位于程序目录中的简单 bash 文件。当我用 shell 启动它或简单地执行它时,bash 文件的代码就可以工作。 bash 文件的代码有效。
我已经尝试了所有选项,但它们都不起作用。我已经评论了每种情况下发生的情况。我不明白它没有找到该文件,因为 bash 文件位于同一目录中。
【问题讨论】:
-
“什么都没有发生”是什么意思?您是否希望将 bash 脚本的输出打印到标准输出?如果是这样,没有更多的代码就不会发生这种情况。
-
还有一些空间可以进行更多实验。其中一个示例是启动交互式 shell(而不是尝试立即运行脚本),另一个示例是为脚本提供完整路径。
-
另外,首先您可能希望在该脚本中有一些可以确定工作的内容,例如将某些内容回显到文件中,例如 /tmp/my.test
-
您的代码不起作用,因为它已全部被注释掉。
-
@Andreas,哈哈。是的,确实是这个问题。