Linux中脚本执行遇到错误时,一般都会打印错误及错误所在的行号。有的错误提示能望文知义,有的描述不是能够知其所以然,还有的错误是前面的过程导致了错误的发生。如何能快速发现代码中的错误?Linux中脚本调试并没有特定的工具,在windows平台上可以借助visual studio来调试vbscript脚本,也希望不久以后linux中也有类似的脚本调试工具。如果已经有了,希望能告诉我。下面总结一下我常用到的调试方法。
1:打印程序日志的方法,这种方法在各种语言的程序中都被广为应用。我们可以用print 和 echo等输出语句。如果希望调试日志在运行不出现,可以写个类似的函数。
debug_info()
{
if [ "$DEBUG" = "true" ]
then
$@
fi
}
2:在调用shell脚本是加上命令行选项或者是利用set命令。
比如在 sh -n 脚本文件名 或者 set -o noexec 缩写是set -n 表示只检查语法不执行。
sh -v 脚本文件名 或者 set -o verbose 缩写是set -n 表示在命令执行前显示。
sh -x 脚本文件名 或者 set -o xtrace 缩写是set -x 表示在命令执行后显示。
sh -u 脚本文件名 或者 set -o nounset 缩写是set -u 如果出现了未定义的变量就给出错误消息。
3:使用用trap命令来执行错误和调试信号的输出
trap [命令,函数,语句] 信号[ERR,DEBUG...]
例如:
ERRPRINT()
{
echo "LINE:$1 command of function exit with $?"
}
trap 'ERRPRINT $LNENO' ERR
abc
good