如何将作为参数的String格式的文件内容从shell脚本传递给java方法?

时间:2017-02-17 14:37:38

标签: java bash shell awk

我从shell脚本调用java方法。它接受String参数。我应该将整个文件内容作为参数传递。

现在从shell脚本我将使用

获取整个文件内容

orgFileContent=$(awk '$1=$1' ORS='\\n' $orgFile)

当我尝试在sh中打印时...我正在获取整个内容。但是当我尝试打印这个被调用的java方法时。我只是前两行。

原因是什么?如何将整个文件作为字符串传递?

提前致谢

2 个答案:

答案 0 :(得分:0)

假设您在Main类中有一个静态main。您可以使用 xargs 命令将文件的内容传递给正在执行的Java程序,即

$ xargs java -classpath CLASSPATH Main < youInputFile

通过这样做,文件的内容将通过管道传递给xargs命令,因此您可以使用简单的

打印文件内容
System.out.println(args[0])

但是,如果您尝试执行如下所示的命令,则输入文件中存在的任何换行符都将表示新传递的参数,因此相同的Java代码将仅打印第一行,然后忽略文件的其余部分(因为第一个词是第一个arg,...)

$ cat yourInputFile | xargs java -classpath CLASSPATH Main

答案 1 :(得分:0)

只需双引号变量

java -classpath CLASSPATH Main "$orgFileContent"