脚本调试

1. 使用选项–x,启用脚本的跟踪调试功能

$ bash -x script.sh

运行带有-x标志的脚本可以打印所执行的每一行命令以及当前状态。你也可以使用sh -x script。

2. 使用set -x和set +x对脚本进行部分调试

文件名: debug.sh

#!/bin/bash 
for i in {1..6} ; do 
    set -x 
    echo $i 
    set +x 
done 
echo "Script executed"

在上面的脚本中,只会打印出echo $i的调试信息,因为使用了-x和+x对调试区域进行了限制。

3. 自定义格式显示调试信息

前面介绍的调试手段是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不要进行任 何操作。

附注

  1. -x标识将脚本中执行过的每一行都输出到stdout。我们也可能只关注脚本某些部分的命令及参数的打印输出。针对这种情况,可以在脚本中使用 set builtin 来启用或禁止调试打印。

     set –x:在执行时显示参数和命令。 
     set +x:禁止调试。 
     set –v:当命令进行读取时显示输入。
     set +v:禁止打印输入。
    
  2. 使用注释 将注释从 #!/bin/bash 改成 #!/bin/bash -xv,不用任何其他选项就可以 启用调试功能了。

results matching ""

    No results matching ""