我正在perl脚本中执行一个命令,当该命令完成时,会向STDOUT发送一个问题,要求Y或N回答问题.如果没有给出答案(即我只是结束脚本),那么我们在shell中有一个等待答案的挂起进程.我怎样才能提供所需的Y答案?
perl v5.8.4 solaris 10
最简单的:
使用shell的能力将"Y"重定向到命令的STDIN:
`echo "Y" | your_command_expecting_Y`;
Run Code Online (Sandbox Code Playgroud)
或(稍差但更灵活).
`your_command_expecting_Y < /my/file/containing/one/line/with_Y_in_it.txt`;
Run Code Online (Sandbox Code Playgroud)更复杂但无限更灵活的Perl原生:
使用Expect模块
use Expect;
# create an Expect object by spawning another process
my $exp = Expect->spawn($command, @params);
$exp->send("Y\n");
Run Code Online (Sandbox Code Playgroud)