我开始编写 perl 脚本,并正在调用外部 rsync 应用程序进行备份。我想捕获 rsync 操作的输出,我正在使用这种格式:
print "Starting backup. Please wait...\n";
my @output = `rsync -avut /home /media/drive/`;
此时,脚本按预期运行,但 rsync 的操作被捕获到我的数组中,我看不到进度。有没有办法像上面那样捕获输出,但也在我的控制台中显示它?
反引号捕获 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);
像这样的东西可能会奏效
use strict;
my $fh;
open $fh, "find /|"; #don't forget to check it opens!!
while (<$fh>){
chomp;
print "here--$_\n";
}