我开始处理perl脚本,我正在调用外部rsync应用程序来进行备份。 我想捕获rsync操作的输出,我正在使用这种格式:
print "Starting backup. Please wait...\n";
my @output = `rsync -avut /home /media/drive/`;
此时,脚本正在运行,但是rsync的操作被捕获到我的数组中,我无法看到进度。有没有办法捕获上面的输出,但也在我的控制台中显示它?
答案 0 :(得分:4)
反引号捕获STDOUT并将其放入数组中。
如果你想看到STDOUT以及在变量中捕获它,你可以使用open()。
我觉得这样的事可能有用吗?
my $output;
print "Starting backup. Please wait...\n";
open(RSYNC, "-|", "rsync -avut /home /media/drive")
or die "Can't exec rsync : $!";
while(<RSYNC>)
{
print $_;
$output .= $_;
}
close(RSYNC);
答案 1 :(得分:0)
这样的事情可能会成功
use strict;
my $fh;
open $fh, "find /|"; #don't forget to check it opens!!
while (<$fh>){
chomp;
print "here--$_\n";
}
答案 2 :(得分:0)