`
546285558
  • 浏览: 6700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

1004-调试脚本

    博客分类:
  • bash
阅读更多
1、介绍
我们可以利用Bas内建的高度工具或按照易于调试的方式编写脚本。

2、使用选项-x,启动shell脚本的跟踪功能
bash -x script.sh
运行带有-x选项的脚本可以打印出所执行的每一行命令以及当前状态。
注意,也可以通过sh -x script.sh

3、使用set -x和set +x对脚本进行部分调试。
#!/bin/bash
#Filename: debug.sh
for i in {1..6};
do
set -x
echo $i
set +x
done
echo "Script executed"
在上面的脚本中,只会打印出echo $i的调试信息,因为使用了-x和+x对调试区域进行限制。

4、前面介绍的调试手段是bash内建的,它们通常以固定的格式生成调试信息,但是在很多情况下
我们需要自定义格式显示调试信息,这可以通过传递_DEBUG环境变量来建立这类调试风格。
如下面的代码:
#!/bin/bash
function DEBUG()
{
    [ "$_DEBUG" == "on" ] && $@ || :
}
for i in {1..10}
do
    DEBUG echo $i
done
可以将调试功能置为on来运行上面的脚本。
$ _DEBUG=on ./script.sh
我们在每一个需要打印信息的语句前加上DEBUG。如果没有把_DEBUG=on传递给脚本,那么调试信息不会打印出来。
在Bash中,命令":"告诉shell不要进行任何操作。

5、工作元理
-x标识将脚本中执行过的每一行都输出到stdout。不过我们也可能只关注脚本中的某些部分的命令及参数的打印。
针对这种情况,可以在脚本中使用set builtin来启用或禁用调试打印。
set -x:在执行时显示参数和命令
set +:禁止高度
set -v:当前命令进行读取时显示输入
set +v:禁止打印输入

6、shebang妙用
把shebang从#!/bin/bash改成#!/bin/bash -xv,这样一来,不用任何其它选项就可以启用调试功能了。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics