echo和pipe在java命令行环境中的含义是什么?

时间:2013-09-01 14:57:37

标签: java echo pipe

这就是我所看到的: echo "A B C D E F G H I" | java Subset 3

我真的不明白|echo在这里的含义。在阅读了一些堆栈溢出线程之后,我知道由于命令行参数不会转到System.in,echo有助于将它放在那里吗? (我对此真的有一个非常模糊的想法),|命令将“每个参数”“逐个”提供给程序?

这很有吸引力,但是当我尝试在eclipse调试器中测试它们时,这就是我得到的:

enter image description here

我期待一些特别的东西,但所有部分都只是像任何正常的论点一样去args []。这有点令人困惑。

1 个答案:

答案 0 :(得分:5)

如果您传递字符串

echo "A B C D E F G H I" | java Subset 3

作为Eclipse中的命令行参数,您将获得所看到的行为。但是,如果在命令行中输入此内容, shell 将首先处理该命令。 shell将其解释为

  1. 将字符串“A B C D E F G H I”回复到stdout
  2. 启动一个单独的进程来运行带有参数Subset 3
  3. 的Java JVM
  4. 将stdout从echo传递到Java进程'stdin
  5. 然后JVM获取参数(Subset 3)并将第一个字符串Subset解释为要运行的类名,并将3解释为Java程序的参数。