我有一个Perl脚本,用反引号调用另一个程序,并检查输出是否有某些字符串。运行正常。
我遇到的问题是当其他程序无法正常运行并等待用户输入时。它要求用户在退出程序前按两次输入。
如何告诉我的Perl脚本在此程序中按两次输入?
答案 0 :(得分:3)
已启动的命令从脚本接收相同的STDIN和STDERR,只是将STDOUT传送到您的脚本。
您可以在运行命令之前关闭STDIN,并且没有输入源。从STDIN读取将导致错误,并且被调用的命令将退出:
close STDIN;
my @slines = `$command`;
这也将使控制台输入脚本的任何机会无效。
另一种方法是使用IPC::Open2
,它允许你的脚本同时控制命令的STDIN和STDOUT:
use IPC::Open2;
open2($chld_in, $chld_in, 'some cmd and args');
print $chld_in "\n\n";
close $chld_in;
@slines = <$chld_out>;
close $chld_out;
此脚本提供命令所需的两个\n
输入,并读取命令输出。
答案 1 :(得分:2)
你可以把它们管道输入:
echo "\n\n" | yourcommand