在linux中使用echo使用Runtime.exec创建文件?
我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
echo
不是一个真正的命令,因为它有一个可以运行的二进制文件。它是 shell 的内置函数。您可以尝试在 Windows 中运行
cmd.exe
或在 Linux/Mac/Unix 中运行sh
之类的 shell,然后传递命令作为字符串运行。就像使用 ' bash',你可以这样做:编辑,因为使用
运行时
的重定向有点不同要正确执行重定向,你应该使用
exec 需要一个
String[]
。这是一个适用于重定向的简单示例。
但如果您只想创建一个文件,您可以使用 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 orsh
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 aString[]
.Here's a quick example that does work with redirection.
But if you just wanted to create a file, you could create the file with Java's own API rather than use
Runtime
.这是因为
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"