我有一个bash shell脚本,它执行一堆命令并使用>
将命令输出重定向到日志文件。如果我使用Runtime.getRuntime().exec("sh shellscript.sh");
从Java调用shell脚本,shell脚本会被执行,但日志文件不会被写入!为什么?我如何使它工作?用Java重定向调用bash脚本
编辑: 好吧,所以我想要做的是有点不同。你的代码工作正常。但是现在在Java程序中重定向不起作用。在下面的示例程序中,日志文件未写入!
$ cat script.sh
#!/bin/sh
echo "Hello there"
echo "Hello there 2"
$ cat RunScript.java
public class RunScript {
public static void main(String[] argv) throws Exception {
int i = Runtime.getRuntime().exec("sh /home/gpx/script.sh >> log").waitFor();
System.out.println("Exit code : " + i);
}
}
他们是相对的。我们只是写一些像`cat file.txt >> log.txt`。我们已经检查过了! – GPX 2010-12-03 08:54:35
好吧,如果它们是相对的,那么它们将被写入一个相对于您运行的java进程的工作目录的位置。所以你应该检查相对于java进程的工作目录的日志文件。我不会建议,尽管 - 日志文件应写入绝对位置,必须是可配置的。 – madhurtanwani 2010-12-03 14:18:19