如何获取shell命令输出的错误信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取shell命令输出的错误信息相关的知识,希望对你有一定的参考价值。

不太明白你表达的意思,是无法看到错误信息还是想保存错误信息?

1、一般来讲,shell命令都是有错误输出的,它会打印在屏幕上,但实际上是标准错误输出文件,如果我不想输出到屏幕,而是写到文件里,我们可以用管道符'>'重定向标准错误输出,比如:

我cat一个不存在的文件,会有错误输出,我可以把错误重定向到文件里

#cat /tmp/aa
cat: /tmp/aa: No such file or directory
#cat /tmp/aa 2>err.log
#cat err.log
cat: /tmp/aa: No such file or directory

2表示标准错误输出。

另外,我甚至可以把错误输出放到shell变量里:

#aa=$(cat /tmp/aa 2>&1)
#echo $aa
cat: /tmp/aa: No such file or directory

2>&1表示,我把错误输出重定向到标准屏幕输出1上,在赋值给变量aa


2、关于如何调试shell脚本

很简单

#sh -vx xxxx.sh

上述命令会打印shell脚本的执行过程和结果,有助于排错。当然,某些情况下,可能不会有输出(如shell中有函数,可能就不会输出函数里的过程)。

参考技术A echo "errormsg" > &2; 标准错误
echo "infomsg" > &1; 标准输出
参考技术B var=`ps -ef | grep oracle` 或者 var=$(ps -ef | grep oracle) 获取系统中关于Oracle的进程的信息。

以上是关于如何获取shell命令输出的错误信息的主要内容,如果未能解决你的问题,请参考以下文章

linux shell如何去掉错误提示信息

Shell标准输入标准输出和标准错误的重定向总结

Linux 获取命令的帮助信息

shell脚本错误问题

协程 shell_exec 如何捕获标准错误流

如何获取子进程的输出