• Shell之调试


    一、调试方法概述

    在Shell脚本开发过程中,难免会犯各种各样的错误,这时需要的就是能对错误快速定位以及修复,Shell脚本中有以下的调试方法可供参考:

    • 防止是windows下或者其他人的脚本,先使用dos2unix进行脚本格式化
    • 根据执行的脚本报错信息直接定位
    • sh -x进行整个脚本内容调试
    • set -x和set +x对脚本中局部内容进行调试
    • 使用echo(紧跟exit)命令进行打印调试

    二、调试实践

     1、dos2unix脚本格式化

    如果脚本是在windows下开发,最好是使用dos2unix进行格式化一下:

    [root@localhost ~]# yum install -y  dos2unix
    Loaded plugins: fastestmirror
    base                                                  | 3.6 kB     00:00     
    ...
    [root@localhost cal_length]# dos2unix cal_str.sh
    dos2unix: converting file cal_str.sh to Unix format ...

    2、根据执行的脚本报错信息直接定位

    # 脚本中if判断后少一个空格
    [root@localhost cal_length]# cat array_1.sh 
    #!/bin/sh
    arr=(I am looking for you)
    for word in ${arr[*]}
    do
      if [${#word} -le 3 ]
      then
         echo $word
      fi
    done
    
    # 执行脚本直接报错,根据报错信息纠正
    [root@localhost cal_length]# sh array_1.sh 
    array_1.sh: line 5: [1: command not found
    array_1.sh: line 5: [2: command not found
    array_1.sh: line 5: [7: command not found
    array_1.sh: line 5: [3: command not found
    array_1.sh: line 5: [3: command not found

    3、sh -x进行整个脚本内容调试

    # 执行过程很清晰
    [root@localhost cal_length]# sh -x array_1.sh 
    + arr=(I am looking for you)
    + for word in '${arr[*]}'
    + '[' 1 -le 3 ']'
    + echo I
    I
    + for word in '${arr[*]}'
    + '[' 2 -le 3 ']'
    + echo am
    am
    + for word in '${arr[*]}'
    + '[' 7 -le 3 ']'
    + for word in '${arr[*]}'
    + '[' 3 -le 3 ']'
    + echo for
    for
    + for word in '${arr[*]}'
    + '[' 3 -le 3 ']'
    + echo you
    you

    4、set -x和set +x对脚本中局部内容进行调试

    #!/bin/sh
    #脚本中添加set -x和set +x,这样只会调试之间的脚本
    set -x
    arr=(I am looking for you)
    set +x
    for word in ${arr[*]}
    do
      if [ ${#word} -le 3 ]
      then
         echo $word
      fi
    done
    
    # 脚本过程输出
    [root@localhost cal_length]# sh -x array_1.sh 
    + set -x
    + arr=(I am looking for you)
    + set +x
    I
    am
    for
    you

    5、使用echo(紧跟exit)命令进行打印调试

    #!/bin/sh
    arr=(I am looking for you)
    echo ${arr[*]} # 加上echo进行调试,如果正常输出,脚本之前都没问题
    exit # 直接退出脚本
    for word in ${arr[*]}
    do
      if [ ${#word} -le 3 ]
      then
         echo $word
      fi
    done
    
    # 执行脚本
    [root@localhost cal_length]# sh array_1.sh 
    I am looking for you
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Eclipse安装SVN插件(转载)
    推荐eclipse插件Properties Editor(转)
    Eclipse快捷键(转载)
    添加路由命令
    oracle 随机数(转载)
    《图解CSS3——第1章 揭开CSS3的面纱》
    css高度自适应
    JS生成随机数
    判断IE浏览器版本
    IE下SCRIPT5009: “JSON”未定义
  • 原文地址:https://www.cnblogs.com/shenjianping/p/14395511.html
Copyright © 2020-2023  润新知