在Java程序中运行bash命令

在Java程序中运行bash命令,java,bash,Java,Bash,考虑一段Java代码: import java.io.IOException; public class Demo{ public static void main(String []args) throws IOException{ ... String abc="i am here"; System.out.println(abc); } } 我想在Sys

考虑一段Java代码:

import java.io.IOException;
public class Demo{
          public static void main(String []args) throws IOException{
                   ...
                   String abc="i am here";
                   System.out.println(abc);
 }
}


我想在System.out.println()行之后立即运行-echo“THIS STUFF THE FILE”>>file1.txt,假设file1.txt位于同一目录中。

ProcessBuilder类是更现代的版本

import static java.lang.ProcessBuilder.Redirect.appendTo;

ProcessBuilder pb = new ProcessBuilder("/bin/echo", "THIS IS STUFF FOR THE FILE");
pb.redirectOutput(appendTo(new File("file1.txt")));
Process p = pb.start();
请注意,这将直接调用
/bin/echo
,而不是让
bash
查看
路径。这样更安全,因为没有机会得到被黑客攻击的
echo
。另外,由于不使用bash,因此Java用于重定向输出。

使用Runtime.getRuntime().exec()命令,如下所示:

Runtime.getRuntime().exec('echo "THIS IS STUFF FOR THE FILE!" > file1.txt');
文档可以阅读


如果它不起作用,或者您觉得该命令很方便,并且希望了解更多有关它的信息,请帮自己一个忙并阅读。它可以帮你省汗。

到目前为止,你做了哪些尝试?为什么要这么做?bash给了您哪些Java IO没有的东西?答案可能是使用中所示的运行时。我尝试执行command.add()。但它似乎不起作用。我上一次使用java是在很多年前,我不得不断断续续地阅读java源代码。目前,我可以使用bash更好地完成一些小事情。谢谢,卡森。我会调查的。谢谢你,埃里克。这看起来很临床。我会尝试一下,并尽快回复您。Re:“与其让
bash
查看
路径,不如让
echo
”:
echo
实际上是内置在bash中的,因此不必担心这些问题。实际上,有人可能会争辩说,使用Bash内置比使用
/bin/echo
更安全,因为前者在使用Bash的每个系统上的行为方式都是相同的,而后者的行为更加多变。(当然,前者取决于Bash的存在,而后者则不然。)我没有意识到
echo
是内置在
Bash
中的。我只是对shell脚本有点偏执。