繁体   English   中英

在linux中使用echo使用Runtime.exec创建一个文件?

[英]Create a file using Runtime.exec using echo in linux?

我在 Java 中使用 Runtime.exec 时遇到问题,似乎有些命令有效而其他命令无效。 例如,如果我跑

echo some data > data.txt

在我的终端中它工作正常,但是如果我尝试使用 Java 来执行此操作,则它不起作用。

Runtime mRuntime = Runtime.getRuntime();
Process mProcess = mRuntime.exec("echo some data > data.txt");
mProcess.waitFor();

这有什么原因吗?

echo不是一个真正的命令,因为它有一个可以运行的二进制文件。 它是shell的内置函数。

您可以尝试在 Windows 中运行像cmd.exe这样的 shell 或在 Linux/Mac/Unix 中运行sh ,然后传递命令以作为字符串运行..就像使用“bash”一样,您可以这样做:

编辑因为使用Runtime重定向有点不同

要正确进行重定向,您应该使用采用String[]exec形式。

这是一个适用于重定向的快速示例。

public class RunTest {
   public static void main(String[] args) throws Exception {
      String [] commands = { "bash", "-c", "echo hello > hello.txt" };
      Runtime.getRuntime().exec(commands);
   }
}

但是,如果您只想创建一个文件,则可以使用 Java 自己的 API 创建该文件,而不是使用Runtime

那是因为echo是一个 shell 内部命令,而不是一个可以执行的程序! 尝试运行bash -c "echo some data > data.txt"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM