不只是简单的调用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 脚本时传入,直接拼接在语句后面。