[英]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.