Shell脚本的简单排错法及调试程序bashdb
source link: https://zhang.ge/1517.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Shell脚本的简单排错法及调试程序bashdb
Jboss的研究稍有卡壳,那就来点基础教程好了。
与众多脚本语言一样,Shell脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。找出脚本中的错误是很重要的能力。比如,我经常不小心会把echo命令写成了ehco,那么执行就会出现下面这种情况:
从报错信息很容易判断出错的原因是“命令不存在”。重新编辑这个文件修改成echo就可以解决。如果只是语法或命令上的错误还是比较容易辨别的,但往往一些逻辑或算法错误就不容易发现,因为语法正确且本身不会造成程序运行错误。比如说下面的脚本,本来想连续10次做某些操作的,结果却迟迟没输出。仔细观察一下就知道是陷入了死循环。
如果在上面的循环中加入echo语句,就容易发现问题了。而如果是单次循环过快,根本来不及看就进入了下一次循环,那这时就可以加入sleep命令降低单次循环的速度,比如使用sleep 2,单次循环就将延时2s,给我们带来足够的观察时间:
为了更清晰的看到脚本运行的过程,我们还可以借助-x参数来观察脚本的运行情况。比如上面的脚本,我们使用-x参数执行就可以发现,变量i的值一直在增加,且一直满足x>0的条件,所以这是一个死循环。所以,我们只要将i=i+1修改成i=i-1即可。
Shell本身并没有提供更好的排错工具,为了更加精细地调试Shell脚本,我们可以借助第三方工具bashdb。这是一个类似于GDB的脚本调试软件,小巧而强大,具有这只断点、单步执行、观察变量等功能。下载时请根据所使用的bash版本选择相应的bashdb,否则会提示因为版本不符合而无法安装。
如下查看bash版本:
如下安装:
安装完成后,我们便可以在终端使用bashdb命令了,改命令典型用法如下:
常用参数:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK