我正在使用Runtime.getRuntime()。exec()从Java代码运行Shell脚本。当我将参数作为字符串传递时,代码工作正常
Runtime.getRuntime().exec("sh test.sh")
由于必须传递带有空格的路径的其他参数,因此我将String替换为String数组。
String[] cmd = {"sh test.sh", "/Path/to my/resource file"};
Runtime.getRuntime().exec(cmd)
我也尝试过
String[] cmd = {"sh test.sh"};
Runtime.getRuntime().exec(cmd)
但是他们两个都不起作用。它的抛出异常
java.io.IOException: Cannot run program "sh test.sh":
java.io.IOException: error=2, No such file or directory
当以String形式传递时和与String数组一起使用时,为什么相同的脚本文件会引发异常。有没有人遇到过这个问题。请帮我解决这个问题,以字符串数组作为Runtime.exec()的参数。提前致谢。
第一个字符串成为命令。没有要执行的文件“ sh test.sh”。
更改
String[] cmd = {"sh test.sh", "/Path/to my/resource file"};
至
String[] cmd = {"sh", "test.sh", "/Path/to my/resource file"};
(一般使用流程构建器API)
问题内容: 我有一个shell脚本 随机播放大型文本文件(600万行和6列) 根据第一列对文件进行排序 输出1000个文件 所以伪代码看起来像这样 有没有一种方法可以运行此Shell脚本以充分利用多核CPU? 在这一刻, 。按1到1000的顺序执行,非常慢。 谢谢你的帮助。 问题答案: 查看bash子外壳程序,这些外壳程序可用于并行运行脚本的各个部分。 我还没有测试过,但这可能是一个开始:
我正在尝试以root用户身份运行脚本。这是我的密码 它在出错 我也遵循了这些方法,但最终出现了错误
问题内容: 您可以在外壳程序脚本运行时对其进行编辑,并使更改影响正在运行的脚本吗? 我对csh脚本的具体情况感到好奇,因为我有该批处理运行一系列不同的构建风格并整夜运行。如果在操作过程中发生什么事情,我想加入并添加其他命令,或注释掉未执行的命令。 如果不可能,是否有任何外壳或批处理机制可以使我做到这一点? 当然,我已经尝试过了,但是要知道它是否有效还需要几个小时,而且我对幕后正在发生或未发生的事情
问题内容: 我想从下面的程序中运行一个shell脚本,但它似乎无能为力。我已经直接在linux终端中运行了相同的命令,它运行正常,所以我猜这是我的Java代码。如您所见,我首先使用PrintWriter将命令写入Shell脚本,但我希望这不会影响Shell脚本本身的运行。任何帮助,将不胜感激! 问题答案: 您应该使用返回的结果。 将命令作为单独的进程执行,并返回类型为的对象。您应该调用以便程序等待
问题内容: 我正在尝试从Java执行Bash Shell脚本,并且使用这段代码可以正常运行。 上面的代码异步运行良好。但是我想实现的是同步执行代码。我希望Java进程等到脚本执行完成后再执行下一批代码。 总而言之,我希望在批处理文件(“ myscript.sh”)完成执行 之后 执行“打印语句-脚本成功执行”。 谢谢 问题答案: 你要等待进程结束,这是WAITFOR()这样的
问题内容: 我快要解决这个问题了。 下面是代码: 问题答案: 您的代码是正确的,我相信您不会收到异常,如果您使用进行阅读,则不会得到任何东西。 已经说过,现在命令是100%以这种方式执行,这是因为您正在回显某些内容,需要使用来将其读回。 检查以下示例,该示例将成功创建一个名目录并打印您正在回显的内容。为了将其放入日志文件,恐怕您可以使用“>”来完成它,您可能必须使用一些编辑器命令或使用Java创建