当前位置: 首页 > 科技观察

如何在Linux中为Shell脚本启用调试模式

时间:2023-03-20 15:25:31 科技观察

脚本是存储在文件中的一系列命令。在终端上一条一条输入命令,顺序执行的方式太弱了。使用脚本,系统中的用户可以将所有命令存储在一个文件中,并多次调用该文件重新执行命令。在学习脚本或编写脚本的早期阶段,我们通常从编写小脚本或短脚本开始,只有几行命令。在调试此类脚本时,我们通常无非就是观察它们的输出以确保它们正常工作。然而,当我们开始编写具有非常长或数千行命令的高级脚本时,例如更改系统设置的脚本、在网络上执行关键备份等,我们意识到仅查看脚本输出是不够的脚本中的错误!因此,在有关Shell脚本调试的Linux系列的这一期中,我们将了解如何启用Shell脚本调试,然后在本系列的后面解释不同的Shell脚本调试模式以及如何使用它们。如何开始编写脚本脚本与其他文件的不同之处在于它的第一行包含#!(She-Bang-解友:定义文件类型)和路径名(解释器路径),它通知系统该文件是命令集合,由指定程序(解释器)解释。以下是不同类型脚本的首行示例:#!/bin/sh[shscript]#!/bin/bash[bashscript]#!/usr/bin/perl[perlprogram]#!/bin/awk-f[awkscript]注意:如果脚本只包含一组标准系统命令,没有任何内部shell指令,第一行或#!可以删除。如何在Linux操作系统中执行shell脚本调用脚本脚本的一般语法是:$脚本名参数1...参数N的另一种可能形式是显式指定执行脚本的shell,如下:$shell脚本名称参数1...参数N示例:$/bin/bash参数1...参数N[bash脚本]$/bin/ksh参数1...参数N[ksh脚本]$/bin/shparameter1...ParameterN[shscript]对于没有#!作为第一行,只包含基本的系统命令,示例如下:###Thescriptonlycontainsstandardsystemcommandscd/home/$USERmkdirtmpecho"tmpdirectorycreatedunder/home/$USER"makesitExecutableandrun,如下:$chmod+xscriptname$./scriptname如何启用shell脚本调试模式以下是主要的shell脚本调试选项:-v(verbose的缩写)-告诉shell显示所有OK,激活详细模式。-n(noexec或noecxecution的缩写)-指示shell读取所有命令而不执行它们,此选项激活语法检查模式。-x(xtrace或executiontrace的缩写)-告诉shell在终端中显示所有已执行的命令及其参数。此选项用于启用shell跟踪模式。1.改变shell脚本的第一行第一种机制是改变shell脚本的第一行,如下,这将启动脚本调试。#!/bin/shoptions其中option可以是上述调试选项中的一个或多个。2.调用Shell调试选项第二种是用下面的调试选项启动Shell,这个方法也会打开整个脚本调试。$shelloptionparameter1...parameterN例子:$/bin/bashoptionparameter1...parameterN3,使用shell内置命令集第三种方法是使用内置命令集调试给定的shell脚本的一部分,作为一个函数。这种机制很重要,因为它允许我们调试任何shell脚本。我们可以使用如下set命令开启调试模式,其中options是前面提到的所有调试选项。$set选项启用调试模式:$set-option禁用调试模式:$set+option此外,如果我们在shell脚本的不同部分启用多种调试模式,我们可以一次禁用所有调试模式,如下所示:$set-on开启shell脚本调试模式,先说这些吧。正如我们所见,我们可以调试整个shell脚本或它的特定部分。在本系列的后续两篇文章中,我们将通过示例介绍如何使用Shell脚本调试选项,并详细了解verbose、语法检查和跟踪调试模式。更重要的是,欢迎通过以下评论对本指南提出任何问题或反馈。