Java 命令行输入与heredoc
我有一个令人沮丧的简单问题:我需要编写一个接受以下形式输入的程序:
cat << EOF | java myProgram.java
> 1 2 3 4
> 5 6 7 8
> etcetera
> EOF
但是当我尝试在 main() 中对其执行任何操作时,我的 args[] 始终为空。甚至cat << EOF | echo
后跟输入不会在终端产生任何输出。我在这里做错了什么?
I have a frustratingly simple problem: I need to write a program that accepts input of the form:
cat << EOF | java myProgram.java
> 1 2 3 4
> 5 6 7 8
> etcetera
> EOF
But my args[] is always empty when I try to do anything with it in main(). Even cat << EOF | echo
followed by input doesn't produce any output at the terminal. What am I doing wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用标准输入流:
Use the standard input stream:
您没有向程序提供任何参数,因此
args[]
当然是空的。您可以从
System.in
阅读此处文档。您似乎对参数 (
args[]
) 和stdin
(System.in
) 之间的区别感到困惑。echo
将其参数 (args[]
)写入stdout
,例如:cat
将其stdin
(System.in
) 写入stdout
,例如:或
Your
cat << EOF | echo
示例不起作用,因为echo
不读取stdin
。另外,您使用
cat
是没有用的。你可以只写You didn't provide any arguments to the program, so of course
args[]
is empty.You can read the heredoc from
System.in
.You seem confused about the difference between arguments (
args[]
) andstdin
(System.in
).echo
writes its arguments (args[]
) tostdout
, e.g.:cat
writes itsstdin
(System.in
) tostdout
, e.g.:or
Your
cat << EOF | echo
example doesn't work becauseecho
does not readstdin
.Also, your use of
cat
is useless. You can just write