如何制作 bash 包装脚本来执行接受 stdin 并输出到 stdout 的 java jar

loc*_*ost 2 java bash io-redirection

我制作了一个 java 程序,它从 stdin 获取输入并将输出返回到 stdout,它运行得非常好:

cat inputfile | java -jar whatever.jar <args>
Run Code Online (Sandbox Code Playgroud)

我想制作一个 bash 包装脚本放入我的脚本中,~/bin这样我就可以运行

cat inputfile | whatever
Run Code Online (Sandbox Code Playgroud)

,它将执行完全相同的功能。

如何制作一个包装器脚本,将标准输入不受干扰地传递到 jar,同时接收标准输出以回显到 CLI?

我认为我可以通过将输入文件发送到命令的一种方式来实现这一目标,但不知道如何同时从命令中获取输出。

Tho*_*orn 5

解决方案:

#!/bin/bash
exec java -jar whatever.jar "$@"
Run Code Online (Sandbox Code Playgroud)

讨论:

与所有 Unix shell 一样,Bash 有一个名为 的特殊变量$@。它包含 shell 脚本的参数列表。我会用它来<args>接收whatever.jar.

这样,Bash 甚至永远不会触及stdin和。它只是简单地调用,通过 传递给它,然后让开。所有的读取和写入都是直接完成的。stdoutwhatever.jarjavawhatever.jar<args>$@stdinstdoutwhatever.jar