在Perl中,通常通过capture
函数同时捕获stderr
, stdout
和退出代码。这是一个基本示例:
my $output = `/path/to/command 2>&1`;
if ($output =~ /(Success|Failure))/ {
my $error = $2
...
}
在上述示例中:
/path/to/command 2>&1
将 command
执行的输出同时重定向到 stderr
和 stdout
,即 stderr
和 stdout
的结果将被捕获。if ($output =~ /(Success|Failure))/
将 $output
匹配 /Success
或 /Failure
,如果匹配到,则捕获该结果并赋值给 $error
变量。$error
现在存储了stderr
和 stdout
中捕获到的任意错误。需要注意的是,由于操作系统的限制,在不同的操作系统中,命令的解释和执行方式不同,因此使用 $output
可以捕获到 command
的输出,但是不一定包含了 stderr
和 stdout
的内容。另外,如果 command
是一个脚本或命令,则需要确保命令执行成功(无错)才能捕获退出代码。
综上所述, 使用重定向操作符 >
和 1>&2
可以同时捕获stderr
和 stdout
,然后再使用匹配正则表达式或其他方法捕获并保存任意错误信息和退出代码。
领取专属 10元无门槛券
手把手带您无忧上云