Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239323
  • 博文数量: 91
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-12 09:38
文章分类

全部博文(91)

文章存档

2017年(1)

2011年(1)

2008年(15)

2007年(74)

我的朋友

分类: LINUX

2007-08-25 10:44:35

打开调试的方法,是修改脚本的第一行,通常脚本的第一行是:
 #!/bin/bash
 为了指定调试选项,你可以像下面的修改
 #!/bin/bash opt
 高度技术只有在被调用时才有效
 不执行 -n 语法检查(读入所有命令,但不执行它们)相当于C语言中的编译
 冗余    -v 显示所有读入的行
 执行跟踪 -x 调试(在命令行显示它们的参数,通常被称作"shell跟踪")相当于C语言中的连接
 
 调试和$-
 当一调试选项被激活时,这个选项的字母就被添加到变量$-。如果使用了-v,字母v就被添加到$-中,可以用以下语句来检测:
 case $- in
  *v*) echo "using the v parameter';;
  *x*) echo "
using the x parameter";;
  
set command
  激活调试模式时,整个脚本都有效,但有时你只想调试某一部分,这时你需要用set command
  example:
   #!/bin/bash
    set -x
     if [ -z "
$1" ]; then
      echo "
ERROR: insufficient args"
      exit 1
     fi
   当你设置了set命令后,如不禁止,他会在后面的所有脚本语句中都有效
 关闭调试
   set +opt
    example:
     shultdown the above debug:
     set +x
     shultdown all debug(关闭所有的调试):
     set -
     
 只对某个函数进入调试
 set -x debugfunction set +x
 
 语法检查
   在处理shell脚本时,最好是在执行它之前,进行语法检查,如果你运行过C语言就知道,第一步是编译,也就是语法检查。
   有如下脚本,脚本名为dg
   #!/bin/bash
    YN=y
    if [ $YN = "
yes" ]
    echo "
yes"
    fi
   你可以像这样检查他的语法:
   $/bin/bash -n ./dg
   ./s1: line 5: syntax error near unexpected token `fi'
   ./s1: line 5: ` fi'

   注意:这里的/bin/bash不能用source和 . 代替,因为是在调试,不是在运行,否则他们是不认-n选项的
   
 使用冗余模式
   正如上面你所看到的,给出的信息不是很详细,如果你想知道更详细的信息,就需用-v,将上面的修改如下:
   $/bin/bash -nv ./dg
   #!/bin/bash
    YN=y
    if [ $YN = "
yes" ]
    echo "
yes"
    fi
    ./s1: line 5: syntax error near unexpected token `fi'
    ./s1: line 5: ` fi'
    现在是不是很好查看已知的错误,只需在echo上面加上一个then,就不再显示错误了,修改后结果如下:
    #!/bin/bash
    YN=y
    if [ $YN = "
yes" ]
    then echo "
yes"

   fi

阅读(916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~