1

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

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

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

在此处输入图像描述

我期待一些特别的东西,但所有部分都只是像任何普通参数一样进入 args[] 。这有点令人困惑。

4

1 回答 1

6

如果你传递字符串

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

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

  1. 回显字符串 '"ABCDEFGH I"' 到stdout
  2. 使用参数启动一个单独的进程来运行 Java JVMSubset 3
  3. 将标准输出从 管道echo传输到 Java 进程的标准输入

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

于 2013-09-01T15:12:32.780 回答