首页 > 解决方案 > 如何制作 bash 包装脚本来执行将标准输入和输出到标准输出的 java jar

问题描述

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

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

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

cat inputfile | whatever

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

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

我想我可以通过一种方式将输入文件发送到命令,但不知道如何同时从命令中获取输出。

标签: javabashio-redirection

解决方案


解决方案:

#!/bin/bash
exec java -jar whatever.jar "$@"

讨论:

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

这样一来,Bash 甚至都不会触及的stdinand stdoutwhatever.jar它只是有javacall whatever.jar,通过 传递<args>给它$@,然后让开。所有的读取stdin和写入stdout都是whatever.jar直接完成的。


推荐阅读