运行 来自 shell 带有重定向的脚本的 java 程序

Running a java program from shell script with redirection

我有一个 java 程序(Main.java、uandf.java 和 node.java),其中主程序接收输入文件的内容并执行操作。对于我的作业,我必须编写一个 shell 脚本来编译和运行程序,但输入文件必须重定向到 shell 脚本:即 shell_script.sh < file.

有没有办法将文件内容作为命令行参数传递给 java 程序?

我目前拥有的:

#!/usr/bin/bash

javac -O Main.java uandf.java node.java
java -cp Main ""

我是运行剧本./shell_script.sh < filename

java程序中的main方法:

public static void main(String args[]) {
     String[] array = args[0].split("\n");
     ...
}

这是一件奇怪且不规范的事情,但是是的:

#!/usr/bin/bash
javac -O Main.java uandf.java node.java
java -cp . Main "$(cat)"

通常你会从 System.in(就像从键盘)读取你的 Java 程序,然后只使用:

#!/usr/bin/bash
javac -O Main.java uandf.java node.java
java -cp . Main

当 运行 ./shell_script.sh < filename 时,通过 ScannerBufferedReaderSystem.in 读取数据然后 return 来自 filename 的数据.