如何从提示符 - shell或perl捕获错误消息

时间:2013-02-27 23:11:30

标签: perl shell

我正在尝试捕获命令的输出。如果命令执行,它工作正常。但是,当出现错误时,我无法捕获在命令行中显示的内容

EG。

$ out=`/opt/torque/bin/qsub submitscript`
qsub: Unauthorized Request  MSG=group ACL is not satisfied: user abc@xyz.org, queue home
$ echo $out

$

我希望$ out有消息

谢谢!

2 个答案:

答案 0 :(得分:3)

错误发生在stderr上,因此您需要将它们重定向到stdout,以便反引号捕获它:

out=`/opt/torque/bin/qsub submitscript 2>&1`
if [ $? -gt 0 ] ; then
    # By convention, this is sent to stderr, but if you need it on
    # stdout, just remove the >&2 redirection
    echo "Error: $out" >&2
else
    echo "Success: $out"
fi

您应该测试命令的退出状态以确定输出代表什么(显示的方式)。它与perl类似,当然语法略有不同。

答案 1 :(得分:2)

你试过这样做吗

$ out=`/opt/torque/bin/qsub submitscript 2>&1 > /dev/null`
$ echo $out