zoukankan      html  css  js  c++  java
  • Linux Shell 脚本调试

    方法如下所示:
    (1) 使用选项–x,启用shell脚本的跟踪调试功能:
    $ bash -x script.sh
    运行带有-x标志的脚本可以打印出所执行的每一行命令以及当前状态。注意,你也可以使用sh -x script。

    (2) 使用set -x和set +x对脚本进行部分调试。例如:
    #!/bin/bash
    #文件名: debug.sh
    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不要进行任
    何操作。

    附注:

    1.  -x标识将脚本中执行过的每一行都输出到stdout。不过,我们也可能只关注脚本某些部分
    的命令及参数的打印输出。针对这种情况,可以在脚本中使用set builtin来启用或禁止调试
    打印。
     set –x:在执行时显示参数和命令。
     set +x:禁止调试。
     set –v:当命令进行读取时显示输入。
     set +v:禁止打印输入。

    2. shebang的妙用
    把shebang从#!/bin/bash改成 #!/bin/bash -xv,这样一来,不用任何其他选项就可以
    启用调试功能了。

  • 相关阅读:
    Meteor + node-imap(nodejs) + mailparser(nodejs) 实现完整收发邮件
    详解log4j2(上)
    循序渐进之Spring AOP(6)
    循序渐进之Spring AOP(5)
    循序渐进之Spring AOP(3)
    循序渐进之Spring AOP(4)
    循序渐进之Spring AOP(2)
    循序渐进之Spring AOP(1)
    通俗的解释JAVA wait/notify机制
    开发高性能JAVA应用程序基础(内存篇)
  • 原文地址:https://www.cnblogs.com/besharp/p/6108667.html
Copyright © 2011-2022 走看看