1

これは私が見ているものです: echo "A B C D E F G H I" | java Subset 3

ここで何を意味するの|かよくわかりません。echoいくつかのスタック オーバーフロー スレッドを読んだ後、コマンド ライン引数は System.in に移動しないため、echo はそこに配置するのに役立つという考えを得ました。(私はこれについて非常に漠然とした考えを持っています)、|コマンドは「各引数」を「1つずつ」プログラムに提供しますか?

これは魅力的でしたが、Eclipseデバッガーでそれらをテストしようとしたとき、これは私が得たものです:

ここに画像の説明を入力

私は何か特別なものを期待していましたが、すべての部分は通常の引数と同じように args[] に送られます。これは少し混乱します。

4

1 に答える 1

6

文字列を渡す場合

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

Eclipse のコマンド ライン引数として、表示される動作が得られます。ただし、これをコマンド行に入力すると、シェルは最初にコマンドを処理します。シェルはこれを次のように解釈します。

  1. 文字列 '"ABCDEFGH I"' をstdout
  2. 別のプロセスを起動して Java JVM を実行し、引数を指定するSubset 3
  3. echoからJava プロセスの stdin にstdout をパイプします。

次に、JVM は引数 ( ) を取得し、最初の文字列を実行するクラス名およびJava プログラムへの引数としてSubset 3解釈します。Subset3

于 2013-09-01T15:12:32.780 に答える