linux - 用于捕获在反引号中执行的命令的 stderr 和 stdout 的 Perl 脚本

标签 linux perl

在我在 Perl 脚本中执行的以下命令中,如何捕获 stderr?

my $output = `ssh login.com git clone --bare user@login.com:/nfs/repo/ /nfs/repo//4124/`;
if ($? ne '0')
{ 
    $stderr = $output;
    print $stderr;
}
else
{
    $stdout = $output;
    print $stdout;
}

最佳答案

my $output = `ssh login.com git clone --bare user@login.com:/nfs/repo/ /nfs/repo//4124/ 2>&1`;

末尾的 2>&1 将标准错误发送到与标准输出相同的位置,由反引号捕获。

关于linux - 用于捕获在反引号中执行的命令的 stderr 和 stdout 的 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783848/

相关文章:

c - 在 Weston 下运行嵌入在 GTK 窗口中的 Gstreamer 视频

linux - 关于 Linux NMI 看门狗

linux - rsync 如何对 rsync 进行校验和

PHP Shell_exec 仅适用于某些命令

eclipse - 如何使 Eclipse/EPIC 与 perlbrew 一起工作

perl - 我应该如何处理 Perl 模块内部或外部的错误?

perl - 是否有所有 perl 状态运算符和修饰符的简洁列表?

perl - 在 perl 中连接字符串时出现意外结果

linux - 如何将Example.bat更改为Example.pl?

linux - 如何使我的内核模块的 sysfs 条目由非 root 用户拥有?