ITPub博客

首页 > Linux操作系统 > Linux操作系统 > shell 脚本的调试问题

shell 脚本的调试问题

原创 Linux操作系统 作者:babyyellow 时间:2014-03-06 18:10:32 0 删除 编辑
我们之前的shell 脚本的调试基本都是echo 来处理

遇到比较大的脚本的时候,就比较麻烦了,出了问题,还不是很好定位哪行代码出问题了。


其实shell 内置的一些变量可以很好的解决这个问题: 

$LINENO  $FUNCNAME $BASH_LINENO 这几个变量记录了脚本当前的执行位置,以及正在执行的函数

具体可以可以man 文档页。 



代码:
a.sh #!/bin/bash 
abc() {echo "wo shi abc()" 
echo  "func: $FUNCNAME  ln: $LINENO ln2:${BASH_LINENO[1]} brother: ${FUNCNAME[1]}" 
} 


b.sh #!/bin/bash
. ./a.sh 
abc
cdf() {
abc
}


执行结果:

[root@node2 ~]# ./b.sh 
wo shi abc()
func: abc  ln: 5 ln2:0 brother: main

wo shi abc()func: abc  ln: 5 ln2:9 brother: cdf

我们在b.sh 里写了cdf 函数调用 abc 函数 

看到输出的差别了吗? 
 我们可以利用这些参数打印出代码出错行的位置,以及 代码出错时,是由哪个函数调用的,等等。。。。



接下来,就看自己发挥了。 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/133735/viewspace-1102544/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ip 命令的说明
请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908858