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命令了,改命令典型用法如下:

常用参数:

文件下载

无限续期,永久免费科学上网服务,你值得拥有!

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:32   其中:访客  14   博主  16

  1. PHP二次开发 6 来自天朝的朋友 未知浏览器 Unknow Os 山东省济南市 联通

    还真没搞过shell

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 电信

      呵呵,也是脚本的一类了,你PHP那么厉害,这个随便学学就会了。

  2. 刘俊博客 5 来自天朝的朋友 未知浏览器 Unknow Os 重庆市 电信

    评论” alt=”[汗]” title=”[汗]” class=”ds-smiley” /> 不懂

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      呵呵,找些感兴趣的看看~

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      在公司打开你的网站,留言框无法出来,汗~~不知道是不是哪里被封了。。回家再回访你,要不咱们友个链如何?

  3. 圆月博客 5 来自天朝的朋友 未知浏览器 Unknow Os 广西南宁市 电信

    技术活,我表示不懂 评论” alt=”[泪]” title=”[泪]” class=”ds-smiley” />

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      呵呵,其实我想说技术活的文章最不受欢迎~~

  4. 漫道狂徒 5 来自天朝的朋友 未知浏览器 Unknow Os 广东省中山市 电信

    看着你的博客,我才发现,我写的都是啥东西

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      怎么了?

  5. 寇铈鑫 3 来自天朝的朋友 未知浏览器 Unknow Os 河南省平顶山市 联通

    看来你是技术男啊 真心看不懂

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      呵呵,应该说是屌丝一枚。

      • 寇铈鑫 3 来自天朝的朋友 未知浏览器 Unknow Os 河南省平顶山市 联通

        技术男都是人才啊

        • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

          技术男一般都只是穷打工的。。

          • 寇铈鑫 3 来自天朝的朋友 未知浏览器 Unknow Os 河南省平顶山市 联通

            http://www.ldsun.com/896.html 博主 看下这个吧 你就懂了 不是广告哦 只是感觉好 所以推荐下

            • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

              嗯,可惜我不是做开发的~不过系统管理员也能排前20名,也不错哈~呵呵

              • 寇铈鑫 3 来自天朝的朋友 未知浏览器 Unknow Os 河南省平顶山市 联通

                所以么 你很有潜质的

                • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

                  评论” alt=”[哈哈]” title=”[哈哈]” class=”ds-smiley” />

  6. 垂直绿化 4 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市罗湖区 天威有线宽带

    看起来好友技术,收藏先。

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      见笑了~

  7. 73花生博客 4 来自天朝的朋友 未知浏览器 Unknow Os 北京市 联通

    博主是什么专业

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      大学通信工程,现已荒废。。
      懂得太泛,而正好做运维要懂得广。。所以现在职业是linux服务器运维,或者叫linux系统管理员。

      • 73花生博客 4 来自天朝的朋友 未知浏览器 Unknow Os 北京市 联通

        我这服务器好像就是LINUX的,不过服务商总说是Win的,哪个好

        • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

          至少我知道wordpress在linux中跑得更顺畅,兼容性更好。最常见的例子,WP后台登陆,在linux主机要比WIN主机要快~~
          linux中PHP支持拓展的功能模块要多些。

          • 73花生博客 4 来自天朝的朋友 未知浏览器 Unknow Os 北京市 联通

            你卖空间嘛,我要换空间的话找你呗

            • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

              我倒是不卖空间,只是点击我博客底部的【野草】链接去买,我到是可以拿十来块的提成。我现在用的就是这个野草主机,打折的时候买的:100元/年 1G空间/30G流量/无限绑定域名和数据,不算便宜也不算太贵。可以看下这篇文章:http://zhangge.net/1276.html

              记得看他有没有出打折优惠码~~打折才去买。

              • 73花生博客 4 来自天朝的朋友 未知浏览器 Unknow Os 北京市 联通

                有没有帮倒空间的服务,我不会整

                • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

                  倒空间?你是说帮忙拷贝代码去新站点还是?如果是转移站点和解析之类的,这野草客服都会帮你弄好。

                  • 73花生博客 4 来自天朝的朋友 未知浏览器 Unknow Os 北京市 联通

                    是啊,就是把我这个空间的东西,转到那个空间。昂那就好,要是换的话,就来找你了

                    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

                      评论” alt=”[ok]” title=”[ok]” class=”ds-smiley” />

加载中,请稍候...