Linux Shell脚本调试方法
在Linux上做开发,少了不要和shell脚本打交道,要么是自己写脚本,要么是用别人的脚本。shell脚本的语法挺不好记,可读性也不好,有时候不清楚脚本的详细执行细节,需要单步调试才能理解清楚。那么shell脚本有哪些调试方法呢?
1、最笨的方法
在脚本中需要调试的地方加echo,把需要debug的信息打印出来
2、shell -x选项
一般执行shell脚本的方法是:sh xxx.sh
只要加上-x选项:sh -x xxx.sh,就进入了跟踪模式,注意,它不是调试模式。-x选项使得shell在执行脚本的过程中,会把它实际执行的每一个命令行显示出来,并且在行首显示一个"+"号, "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。 "-x"选项使用起来简单方便,如果是调试简答的shell脚本,可以作为首选的调试手段。
3、终极奥义,必杀技 —— bashdb调试器
既然Linux这么强大,有gdb、pdb,所以是不是该有bashdb呢?还真有的!
可以从 https://sourceforge.net/projects/bashdb/files/bashdb/ 下载对应版本的bashdb
首先在自己Linux机器,使用bash --version查看bash版本,比如我的bash版本是4.1.2,那么下载高于这个版本的bashdb就可以,我下载了4.4-0.92版本,下载好后放到Linux机器上,依次执行如下步骤:
tar -zxvf bashdb-4.4-0.92.tar.gz
cd bashdb-4.4-0.92
./configure
make && make install
安装好后,执行/usr/share/bin/bashdb,看到版本号则表示安装成功。
在不同机器上,可执行文件bashdb所在的目录可能不一样,可以在根目录下使用find . -name "bashdb"进行搜索
安装好bashdb后就可以愉快地调试shell脚本了,执行bashdb -debug xxx.sh就可以进入到调试模式,接下来可以使用如下命令进行调试:
(1)代码查看或查找
l,列出当前行及以下的10行
w,列出当前行前后的代码
.,回到正在执行的代码行
/pattern/,向后搜索正则表达式pattern
?pattern?,向前搜索正则表达式pattern
(2)控制脚本执行
b 10,在第10行设置断点
del 10,删除第10行的断点
n,执行下一行
s,执行下一步,遇到函数则进入函数
s 10,单步执行10次,遇到函数则进入函数
c 10,一直执行到第10行
Finish,执行到程序最后
cond 10 expr,在第10行设置条件断点
R,重新启动调试当前脚本
(3)其他命令
h,帮助
help 命令名,查看某个命令的具体用法
q,退出bashdb
x 算数表达式,计算算数表达式的值,并显示出来
!! Shell命令,执行shell命令
看到以上这些丰富的命令,是不是很happy?赶紧试一下吧,^_^
- 点赞
- 收藏
- 关注作者
评论(0)