shell编程关于程序调试一些注意点

来源:互联网 发布:mac应用程序卸载不了 编辑:程序博客网 时间:2024/05/23 22:47

由于shell语言是一门解释型语言,不同于java等的编译语言,它是由上倒下的执行,对于我们写的一些代码,需要进行错误调试.

常见的方式有:1.sh -n +可执行的脚本2.sh -x +可执行的脚本3.可以在脚本中增加一个sleep.

4.使用调试工具:-bashdb.具体做法:

该工具默认未安装,当前最新版本为:4.4-0.92,下载目录:http://bashdb.sourceforge.NET/

1). 如果是ubuntu系统,直接用apt-get来安装

apt-get install bashdb

2). 如果是Centos等版本,使用windows下载后,编译,安装,大致步骤如下:

下载:https://sourceforge.net/projects/bashdb/files/bashdb/

[root@hadoop007 ~]# tar -xzvf bashdb-4.4-0.92.tar.gz-C /usr/src

[root@hadoop007 ~]# cd/usr/src/bashdb-4.4-0.92

[root@hadoop007 ~]# ./configure

[root@hadoop007 ~]# make install


调试实例:

vi /home/test1.sh

#!/bin/bash

 

echo"----------------begin-----------------"

MAX=3

for ((i = 0; i < MAX; i++))

do

  nowdate=`date -d"-$i day" +%Y-%m-%d`

  echo $nowdate

done

echo"----------------end-----------------"

 

调试命令:

./bashdb --debugger /home/test.sh

[root@hadoop007 bashdb-4.4-0.92]# ./bashdb--debugger /home/test.sh

bash debugger, bashdb, release 4.4-0.92

 

Copyright 2002, 2003, 2004, 2006-2012, 2014Rocky Bernstein

This is free software, covered by the GNUGeneral Public License, and you are

welcome to change it and/or distributecopies of it under certain conditions.

 

(/home/test.sh:3):

3:     echo"----------------begin-----------------" 

bashdb<0> n #执行下一条语句

----------------begin-----------------

(/home/test.sh:4):

4:     MAX=3 

bashdb<1> l #列出当前行上下各5行,总共10

 1:    #!/bin/bash

 2:   

 3:    echo"----------------begin-----------------" 

  4:=> MAX=3 

 5:    for ((i = 0; i < MAX;i++)) 

 6:    do 

 7:       nowdate=`date -d"-$iday" +%Y-%m-%d` 

 8:       echo $nowdate 

 9:    done 

 10:   echo "----------------end-----------------" 

bashdb<2> b 7 #在行号为7的行设置断点

Breakpoint 1 set in file /home/test.sh,line 7.

bashdb<3> c #继续运行

Breakpoint 1 hit (1 times).

(/home/test.sh:7):

7:        nowdate=`date -d"-$i day"+%Y-%m-%d` 

bashdb<4> print $i

0

bashdb<5> n

(/home/test.sh:8):

8:        echo $nowdate 

bashdb<6> print $nowdate

2017-03-20

bashdb<7> c 10 #单步往下运行10

One-time breakpoint 2 set in file/home/test.sh, line 10.

2017-03-20

Breakpoint 1 hit (2 times).

(/home/test.sh:7):

7:        nowdate=`date -d"-$i day"+%Y-%m-%d` 

bashdb<8> finish  #运行到结束

Breakpoint 1 hit (3 times).

(/home/test.sh:7):

7:        nowdate=`date -d"-$i day"+%Y-%m-%d` 

date -d"-$i day" +%Y-%m-%d

bashdb<(9)> finish

2017-03-19

Breakpoint 1 hit (4 times).

(/home/test.sh:7):

7:        nowdate=`date -d"-$i day"+%Y-%m-%d` 

bashdb<10> finish

Breakpoint 1 hit (5 times).

(/home/test.sh:7):

7:        nowdate=`date -d"-$i day"+%Y-%m-%d` 

date -d"-$i day" +%Y-%m-%d

bashdb<(11)> finish

2017-03-18

(/home/test.sh:10):

10:   echo"----------------end-----------------" 

bashdb<12> q  #退出

bashdb: That's all, folks...

 

 

 

【常用命令】

l            列出当前行上下各5行,总共10行

q|quit        退出

h             帮助

/for/         向后搜索字符串for

?for?         向前搜索字符串for

x 1+2         计算算术表达式的值

!! ls -laRt   执行shell命令

n             执行下一条语句

s 4           单步执行4次,如遇到函数则进入函数里面

b 4           在行号4处设置断点

del 4         删除行号为4的断点

c 10          一直执行到行号10处  

R|run         重新执行当前调试脚本

finish        执行到程序最后


原创粉丝点击