如何使bash Package 器脚本执行接受stdin并输出到stdout的javajar

au9on6nz  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(440)

我编写了一个java程序,它从stdin获取输入,并将输出返回到stdout,使用以下命令运行得非常好:

cat inputfile | java -jar whatever.jar <args>

我想制作一个bash Package 器脚本来放入我的 ~/bin 所以我可以跑了

cat inputfile | whatever

,将执行完全相同的功能。
如何生成一个 Package 器脚本,将stdin不受干扰地传递到jar,同时将stdout接收回cli?
我认为我可以通过单向方式将输入文件发送到命令,但不知道如何同时从命令中获取输出。

dvtswwa3

dvtswwa31#

我认为bash脚本应该只包含java调用。
然后将文件重定向为脚本的输入:

./script < inputfile
a7qyws3x

a7qyws3x2#

解决方案:


# !/bin/bash

exec java -jar whatever.jar "$@"

讨论:
与所有unix shell一样,bash有一个特殊的变量,名为 $@ . 它包含shell脚本的参数列表。我会用它来接收 <args>whatever.jar .
这样的话,bash就不会碰到 stdin 以及 stdoutwhatever.jar . 它只是 java 呼叫 whatever.jar ,通过 <args> 通过 $@ ,然后让开。所有阅读来源 stdin 写信给 stdout 完成者 whatever.jar 直接。

kmb7vmvb

kmb7vmvb3#

这应该可以做到:


# !/bin/bash

java -jar whatever.jar <args>

相关问题