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

Som*_*jit 1 java pipe echo

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

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

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

在此输入图像描述

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

Jim*_*son 6

如果你传递字符串

echo "A B C D E F G H I" | java Subset 3
Run Code Online (Sandbox Code Playgroud)

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

  1. 回声字符串'"ABCDEFGH I"' stdout
  2. 启动一个单独的进程来运行带有参数的Java JVM Subset 3
  3. 将stdout从echoJava进程管道传输到stdin

然后JVM获取arguments(Subset 3)并将第一个字符串解释Subset为要运行的类名,并将其解释为3Java程序的参数.