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

发布于 2024-11-05 16:32:18 字数 340 浏览 5 评论 0原文

我在 Java 中使用 Runtime.exec 时遇到问题,似乎有些命令可以工作,而其他命令则不能。例如,如果我

echo some data > data.txt

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

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

这有什么原因吗?

I'm having trouble using Runtime.exec in Java, it seems some commands work while others do not. For example if I run

echo some data > data.txt

In my terminal it works fine, however if I try and use Java to do this it doesn't work.

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

Is there any reason for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雪化雨蝶 2024-11-12 16:32:18

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

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

编辑,因为使用运行时的重定向有点不同

要正确执行重定向,你应该使用exec 需要一个String[]

这是一个适用于重定向的简单示例。

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 is not a real command in the sense that it has a binary that you can run. It is a built-in function of shells.

You could try running a shell like cmd.exe in Windows or sh in Linux/Mac/Unix, and then passing the command to run as a string.. Like using 'bash', you can do this:

edit because redirection is a little different using Runtime

To do redirection correctly, you should be using the form of exec that takes a String[].

Here's a quick example that does work with redirection.

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

But if you just wanted to create a file, you could create the file with Java's own API rather than use Runtime.

月光色 2024-11-12 16:32:18

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

That is because echo is a shell internal command not a program that can be executed!
Try running instead bash -c "echo some data > data.txt"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文