java - 在 Linux 中使用 echo 使用 Runtime.exec 创建文件?

标签 java linux shell terminal echo

我在 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 或在 Linux/Mac/Unix 中运行 sh 之类的 shell,然后将命令作为字符串传递。就像使用“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

关于java - 在 Linux 中使用 echo 使用 Runtime.exec 创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914045/

相关文章:

windows - 如何在 Windows 中为 npm run-scripts 设置 shell

linux - 使用 shell 脚本压缩字典

java - "uses unchecked or unsafe operations"

java - 我什么时候应该使用新类而不是添加新字段(作为状态)?

java - 增加 Java 堆空间 : Eclipse vs. BAT 脚本

python - 获取当前操作系统上安装的熔断器版本

linux - Shell 脚本在 Linux 中执行时显示错误

php - 在linux操作系统中安装什么XAMPP或LAMP?

linux - 从 shell 到 docker 容器执行多个命令

java - Maven、GWT 和 Eclipse 项目