每日一SHELL (8) 调试脚本

使用 -x 选项启用 shell 脚本的调试功能
$ bash -x script.sh

这样脚本可以打印出做执行的每一行命令以及当前状态。

脚本内部使用 set -xset +x 对脚本进行部分调试。
#!/bin/bash
# Filename: debug.sh
for i in {1..6};
do
    set -x
    echo $i
    set +x
done
echo Script executed
自定义调试脚本

类似与 c 里面的宏定义 #ifdef DEBUG,我们也可以在 bash 里面做类似的事情:

#!/bin/bash
function DEBUG()
{
    [ "$_DEBUG" == "on" ] && $@ || :
}
for i in {1..10}
do
    DEBUG echo $i
done

于是,以 DEBUG 开头的语句是否执行,就取决于环境变量里面是否定义有 _DEBUG=on

其中 : 是空命令,不进行任何操作。(非常常用)

工作原理

-x 标识将脚本中执行过的每一行都输出到 stdout,不过我们可以在脚本中设置这些内置变量来启用或者禁用调试打印:

  • set -x 执行时显示参数和命令
  • set +x 禁止调试
  • set -v: 当命令进行读取时显示输入
  • set +v: 禁止打印输入
shebang 调试设置

我们可以在 shebang 里面这样写:

#!/bin/bash -xv

这样一来就可以不用其他选项自动开启调试功能了。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/12/bash-shell-8.html【每日一SHELL (8) 调试脚本】

发表评论

电子邮件地址不会被公开。 必填项已用*标注