java 与 shell 交互有没有好的工具? java调用shell脚本,shell脚本执行过程中需要输入参数的那种?

不只是简单的调用shell

不只是简单的调用shell

不只是简单的调用shell

场景

Java 应用程序调用本地 shell 命令,shell 执行过程中,需要接受入参来进行后续的 shell 中的逻辑。

脚本demo

#!/bin/sh
echo "What's your name? : "
read name
echo "Hello $name!"

echo "How old are you? :"
read age
echo "You are $age years old"

我想要的效果

我现在想用 java 去调用这样子一个脚本,并且希望可以通过 java 把 name 和 age 输入到 shell 中,然后获取到 shell 的输出结果。

Runtime.getRuntime().exec()方法可以执行shell命令

Process exec(String command, String[] envp) ,其中command为命令,envp为传入的参数,格式如下:

Runtime.getRuntime().exec("sh ./test.sh", new String[]{"name=lisi","age=20"});

这种 Shell 中有交互的 shell 脚本貌似不能通过 Java 的 Runtime 来执行。
可以把 Shell 脚本中的输入命令换成接收 Shell 参数 $1、$2 的方式,由 Java 调用 Shell 脚本时传入,直接拼接在语句后面。