Вы не предоставили никаких аргументов программе, поэтому, конечно, args[]
пусто.
Вы можете прочитать heredoc из System.in
.
Вы, кажется, смущены разницей между аргументами (args[]
) и stdin
(System.in
).
echo
записывает свои аргументы (args[]
) в stdout
, например:
$ echo foo bar
foo bar
cat
записывает свои stdin
(System.in
) в stdout
, например ::
$ cat << EOF
> foo bar
> EOF
foo bar
или
$ echo foo bar | cat # Useless use of cat
foo bar
Ваш пример cat << EOF | echo
не работает, потому что echo
не читает stdin
.
Кроме того, использование cat
бесполезно. Вы можете просто написать
$ java myProgram.java << EOF
> 1 2 3 4
> 5 6 7 8
> etcetera
> EOF