Linux Shell脚本调试方法

举报
山海之光 发表于 2019/12/28 10:11:24 2019/12/28
【摘要】 在Linux上做开发,少了不要和shell脚本打交道,要么是自己写脚本,要么是用别人的脚本。shell脚本的语法挺不好记,可读性也不好,有时候不清楚脚本的详细执行细节,需要单步调试才能理解清楚。那么shell脚本有哪些调试方法呢?1、最笨的方法在脚本中需要调试的地方加echo,把需要debug的信息打印出来2、shell -x选项一般执行shell脚本的方法是:sh xxx.sh只要加上-x...

在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?赶紧试一下吧,^_^

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。