美文网首页
第1章-小试牛刀(11调试脚本)

第1章-小试牛刀(11调试脚本)

作者: 昨天剩下的一杯冷茶 | 来源:发表于2019-03-01 17:51 被阅读0次

1.11.1实战演练
我们可以利用Bash内建的调试工具或者按照易于调试的方式编写脚本,方法如下所示。
(1)使用选项-x,启用shell脚本的跟踪调试功能:
bash -x script.sh

运行带有-x选项的脚本可以打印出所执行的每一行命令以及当前状态。
你也可以使用sh -x script。

(2)使用set -x和set +x对脚本进行部分调试。例如:


image.png

在上面的脚本中,只会打印出echo $i的调试信息,因为使用-x和+x对调试区域进行了限制。

该脚本并没有使用上例中的seq命令,而是用{start..end}来迭代从start到end之间的值。这个语言构件(construct)在执行速度上要比seq命令略快。

(3)前面介绍的调试方法是Bash内建的。它们以固定的格式生成调试信息。但是在很多情况下,我们需要使用自定义的调试信息。可以通过定义_DEBUG环境变量来启动或禁止调试及生成特定形式的信息。


image.png

可以将调试功能设置为on来运行上面的脚本:
chmod 755 script.sh
或chmod a+x script.sh
_DEBUG=on ./script.sh
我们在每一条需要打印调试信息的语句前加上DEBUG。如果没有把_DEBUG=on传递给脚本那么调试信息就不会打印出来。在Bash中,命令:告诉shell不要进行任何操作。

1.11.2工作原理
-x选项会输出脚本汇总执行过的每一行。不过,我们可能只关注其中某一部分代码。针对这种情况,可以在脚本中使用set builtin来启用或禁止调试打印。
set -x:在执行时显示参数和命令。
set +x:禁止调试。
set -v:当命令进行读取时显示输入。
set +v:禁止打印输入。

1.11.3补充内容
还有其他脚本调试的便捷方法,我们甚至可以巧妙地利用shebang来进行调试。

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

如果每一行前面都加上+,那么久很难在默认输出中跟踪执行流程了。可以将环境变量PS4设置为$LINENO:,显示出每行的行号:
PS4=$LINE:

调试的输出信息可能会很长。如果使用了-x或set -x,调试输出会被发送到stderr。可以使用下面的命令将其重定向到文件中:
sh -x testScript.sh 2>debugout.txt

Bash 4.0以后及后续版本支持对调试输出使用自定义文件描述符:

exec 6> /tmp/debugout.txt
BASH_XTRACEFD=6

相关文章

  • 第1章-小试牛刀(11调试脚本)

    1.11.1实战演练我们可以利用Bash内建的调试工具或者按照易于调试的方式编写脚本,方法如下所示。(1)使用选项...

  • shell脚本调试

    脚本调试 脚本调试 1 使用 -x 启动脚本跟踪调试功能 2 脚本进行部分调试 1 使用 -x 启动脚本跟踪调试功...

  • 1.11 调试脚本

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 启用 shell 脚本的跟踪调试功能bash -x s...

  • Shell 调试脚本 简介

    Shell 脚本调试的主要工作是发现脚本的错误的原因,以及定位脚本中发生错误的行。Bash 提供了多种脚本调试的功...

  • Shell脚本调试选项

    Shell脚本调试选项Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法...

  • vue-loader源码解读

    调试 新增script调试脚本 npm run debug后打开chrome://inspect/,即可看...

  • shell脚本编程 - 技巧篇

    本篇并不讲述shell脚本编程的方法和规则,而是讲述如何更优雅的使用shell脚本。 调试方法 echo调试大法,...

  • ShellScript小试牛刀

    《LinuxShell脚本攻略》笔记,Chap-1:小试牛刀 简介 终端打印 玩转变量和环境变量 通过shell进...

  • Ansible 开发调试 之【模块调试】

    本地调试 需要安装jinja2 库 使用官方提供的测试脚本调试 使下列命令调试modules test-modul...

  • 5、调试器

    1、console 打印调试log信息2、sources 所有脚本文件,可以断电调试3、network ...

网友评论

      本文标题:第1章-小试牛刀(11调试脚本)

      本文链接:https://www.haomeiwen.com/subject/bswhuqtx.html