我正在尝试捕获命令的输出。如果命令执行,它工作正常。但是,当出现错误时,我无法捕获命令行中显示的内容
例如。
$ out=`/opt/torque/bin/qsub submitscript`
qsub: Unauthorized Request MSG=group ACL is not satisfied: user abc@xyz.org, queue home
$ echo $out
$
我希望 $out 有消息
谢谢!
错误在 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 类似,当然语法略有不同。
你有没有试过这样做
$ out=`/opt/torque/bin/qsub submitscript 2>&1 > /dev/null`
$ echo $out