一、如何debug
1.通过sh命令的参数:
sh [-nvx] scripts.sh 选项与参数: -n :不要执行 script,仅查询语法的问题; -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上; -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数!
示例1:no news is good news
[[email protected] tmp]# sh -n add1_100.sh [[email protected] tmp]#
示例2:
[[email protected] tmp]# sh -n add1_100.sh add1_100.sh:行12: 语法错误: 未预期的文件结尾
1 #!/bin/bash 2 #简介略 3 ########## 4 declare i=1 5 declare sum=0 6 while [ ${i} -le 10] 7 do 8 sum1=$((${sum}+${i})) 9 i=$((${i}+1)) 10 done1 11 echo "the total is ${sum}"
示例3:使用-x显示执行的内容:
[[email protected] tmp]# sh -x add1_100.sh + declare i=1 + declare sum=0 + ‘[‘ 1 -le ‘10]‘ add1_100.sh: 第 6 行:[: 缺少 `]‘ + echo ‘the total is 0‘ the total is 0 [[email protected] tmp]#
1 #!/bin/bash 2 #简介略 3 ########## 4 declare i=1 5 declare sum=0 6 while [ ${i} -le 10] 7 do 8 sum1=$((${sum}+${i})) 9 i=$((${i}+1)) 10 done 11 echo "the total is ${sum}"
// 第六行最后一个中括号缺少空格!
2.使用调试钩子
3. 使用"调试钩子"
学过C语言程序的朋友有这个印象吗:我们经常使用DEBUG宏来控制是否要输出调试信息,在shell脚本中我们同样可以使用这样的机制,如下列代码所示:
if [ “$DEBUG” = “true” ]; then echo “debugging” #此处可以输出调试信息 fi
这样的代码块通常称之为“调试钩子”或“调试块”。在调试钩子内部可以输出任何您想输出的调试信息,使用调试钩子的好处是它是可以通过DEBUG变量来控 制的,在脚本的开发调试阶段,可以先执行export DEBUG=true命令打开调试钩子,使其输出调试信息,而在把脚本交付使用时,也无需再费事把脚本中的调试语句一一删除。
如果在每一处需要输出调试信息的地方均使用if语句来判断DEBUG变量的值,还是显得比较 繁琐,通过定义一个DEBUG函数可以使植入调试钩子的过程更简洁方便,如下面代码所示:
$ cat –n exp3.sh 1 DEBUG() 2 { 3 if [ "$DEBUG" = "true" ]; then 4 [email protected] 5 fi 6 } 7 a=1 8 DEBUG echo "a=$a" 9 if [ "$a" -eq 1 ] 10 then 11 b=2 12 else 13 b=1 14 fi 15 DEBUG echo "b=$b" 16 c=3 17 DEBUG echo "c=$c"
在上面所示的DEBUG函数中,会执行任何传给它的命令,并且这个执行过程是可以通过DEBUG变量的值来控制的,我们可以把所有跟调试有关的命令都作为DEBUG函数的参数来调用,非常的方便。
更多方式,待更新...
时间: 2024-10-29 00:42:18