Shell 调试脚本 简介

作者: 赵者也 | 来源:发表于2017-04-02 07:48 被阅读115次

Shell 脚本调试的主要工作是发现脚本的错误的原因,以及定位脚本中发生错误的行。Bash 提供了多种脚本调试的功能。但是比较常用的是使用 Bash 的 -x 选项启动一个子 Shell,它将以调试模式运行整个脚本,使 Shell 在执行脚本的过程中把实际执行的每一个命令行显示出来,并且在命令行的行首显示一个 “+” 号,“+” 号后面显示的是经过了参数扩展的命令行的内容。这将有助于分析实际执行的是什么命令。

Bash 的执行选项还可以在脚本中通过 let 命令来指定。“set -选项”表示启动某选项,“set +选项”表示关闭某选项。所以我们可以在 Shell 脚本中使用 “set -x” 和 “set +x” 命令来调试脚本中的某一段代码。

Bash 中还有一个 “-v” 选项,该选项将激活详细输出模式,在这一模式中,由 Bash 读入的每一行命令都将在执行前被打印,包括注释行。

定制输出信息
$LINENO —— Bash 内部环境变量,表示 Shell 脚本的当前行号。
$FUNCNAME —— Bash 内部环境变量,它是一个包含了当前在执行调用堆栈中的所有 Shell 函数名称的数组变量。${FUNCNAME[0]} 代表当前正在执行的 Shell 函数的名称,${FUNCNAME[1]} 则代表调用函数
${FUNCNAME[0]} 的函数的名字,依次类推。
$PS4 —— Bash 内部环境变量,在使用 Bash 的 -x 选项时,每一条实际执行的命令的行首会显示一个 “+” 号,这个 “+” 号其实就是变量 $PS4 的默认值。

利用 $PS4 变量,再结合 $LINENO$FUNCNAME 两个内部变量,通过重新定义变量 $PS4,可以增强 -x 选项的输出信息。我们可以在执行脚本之前先执行下面的语句:

export PS4=`+{$LINENO:${FUNCNAME[0]}}`

使用示例:


定制输出信息

Bash 中还有一个执行选项 -n,他可以用于测试 Shell 脚本中是否存在语法错误,它会读取脚本中的命令行但是不会执行它们。

本文参考自 《Linux Shell命令行及脚本编程实例详解

相关文章

  • Shell 调试脚本 简介

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

  • Shell -X命令

    shell "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本...

  • shell脚本编程 - 技巧篇

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

  • Shell脚本语法

    1. Shell脚本简介Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所...

  • Shell脚本调试选项

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

  • 1.11 调试脚本

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

  • shell脚本的常用循环

    1 shell脚本简介 在简单介绍shell脚本(shell script)之前,先简单介绍一下shell。 1....

  • [shell脚本]-shell脚本简介

    1.简介 shell脚本就是将一系列需要执行的命令写入文件,通过各类不同的解释器来执行文件,从而达到和linux操...

  • 01.shell简介

    Shell简介 Shell 脚本 shell环境 sh(全称 Bourne Shell): 是UNIX最初使用的 ...

  • 调试shell脚本

    如何开始写一个脚本 一个脚本与其它文件的区别是它的首行,它包含 #! (She-Bang - 释伴:定义文件类型)...

网友评论

    本文标题:Shell 调试脚本 简介

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