脚本调试
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不要进行任 何操作。
附注
-x标识将脚本中执行过的每一行都输出到stdout。我们也可能只关注脚本某些部分的命令及参数的打印输出。针对这种情况,可以在脚本中使用
set builtin
来启用或禁止调试打印。 set –x:在执行时显示参数和命令。 set +x:禁止调试。 set –v:当命令进行读取时显示输入。 set +v:禁止打印输入。
使用注释 将注释从
#!/bin/bash
改成#!/bin/bash -xv
,不用任何其他选项就可以 启用调试功能了。