我正在尝试用Java执行shell脚本。我能够通过以下方式实现这一目标。
#!/bin/bash
read -p "Enter your name : " name
echo "Hi, $name. Let us be friends!"
如果shell需要用户输入,我将如何提供用户输入? 如何实现这个?
示例:my_script.sh
__init__.py
我需要通过Java输入名称。
答案 0 :(得分:1)
编辑以下评论
// writing to file
String input = "Bob";
try ( PrintWriter out = new PrintWriter( filename ) ) {
out.print( input );
}
// redirecting input from file
pb.redirectInput( new File( filename ) );
pb.redirectOutput( Redirect.INHERIT );
初步答复;
取决于它的启动方式,以下可能就足够了
pb.redirectInput( Redirect.INHERIT );
但是要查看消息,还应将输出重定向到std out
pb.redirectOutput( Redirect.INHERIT );
和tee输出可能是从shell
完成的exec 6>&1 1> >(tee /new_path/out.txt) # start tee output to out.txt (save current output to file descriptor 6 for example)
...
exec >&6 # end to restore standard output and terminate tee process
关于InterruptedException的注意事项,它不应该被捕获并继续执行程序,而是传播到任务真正完成的位置。
答案 1 :(得分:0)
您好,您可以这样做: -
String inputName = "blabla";
String command = "/path_to/my_script.sh " + inputName;
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
现在你必须修改你的shell脚本,如下所示: -
#!/bin/bash
#read -p "Enter your name : " name
name = $1
echo "Hi, $name. Let us be friends!"