我想在Solaris中卸载一个包,比如NewPackage
。为此,我使用命令:
pkgrm NewPackage
它将显示STDOUT中的所有步骤,最后它将显示已成功卸载软件包的消息。
如果我想在Perl程序中卸载相同的包,我该如何将STDOUT消息重定向到一个文件,以便在执行结束时我可以转到该文件并验证该文件。目前,我尝试了以下命令但没有成功:
open (FD, "/usr/tmp/result.txt");
$input1 = <FD>;
$input2 = <FD>;
system("pkgrm NewPackage" < $input1);
但不知道如何传递第二个输入。
请告知如何继续。
答案 0 :(得分:2)
一般来说:
strict
和warnings
pragma $input1, $input2
),请使用数组(@inputs
)无论如何,你需要更具体地定义你想要做的事情。
是否要运行命令并将其STDOUT转储到文件中:
`pkgrm $package > $outfile`;
或者可以将结果附加到现有日志中:
`pkgrm $package >> $outfile`;
或者您想要了解结果,看看您的计划中发生了什么:
open( my $result_fh, '>', $outfile ) or die "can't open logfile - $!\n";
my $output = `pkgrm $package`;
if( $oupt =~ /happiness/) {
print $result_fh "hooray!\n", $output;
}
else {
print $result_fh "uh oh\n", $output;
}
或者您需要监控标准错误吗?
或者STDERR和STDOUT是否应合并为一个流?
对于这些案例以及更多see perlfaq8。
答案 1 :(得分:0)