服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 大神教你如何在 Linux 中启用 Shell 脚本的调试模式

大神教你如何在 Linux 中启用 Shell 脚本的调试模式

2023-07-29 18:10未知服务器之家 Linux

导读 是存储在一个文件的一系列。在终端上输入一个个,按顺序执行的方法太弱了,使用,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。 在学习脚本或写脚本的初期阶段,我们通常从写小脚

导读 是存储在一个文件的一系列 。在终端上输入一个个 ,按顺序执行的方法太弱了,使用 ,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。

在学习脚本或写脚本的初期阶段,我们通常从写小脚本或者几行命令的短脚本开始,调试这样的脚本时我们通常无非就是通过观察它们的输出来确保其正常工作。

大神教你如何在 Linux 中启用 Shell 脚本的调试模式

然而,当我们开始写非常长或上千行命令的高 级脚本,例如改变系统设置的脚本,在网络上执行关键备份 等等,我们会意识到仅仅看脚本输出是不足以在脚本中找到 Bug 的!

因此,在 系列中这篇介绍 脚本调试, 我们将看看如何启用 Shell 脚本调试,然后在之后的系列中解释不同的 Shell 脚本调试模式以及如何使用它们。

如何开始写一个脚本

一个脚本与其它文件的区别是它的首行,它包含 #!(She-Bang - 释伴:定义文件类型)和路径名(解释器路径),通知系统该文件是一个命令集合,将被指定程序(解释器)解释。

大神教你如何在 Linux 中启用 Shell 脚本的调试模式

下面是不同类型脚本 首行示例:

#!/bin/sh[sh脚本]
#!/bin/bash[bash脚本]
#!/usr/bin/perl[perl程序]
#!/bin/awk-f[awk脚本]

注意:如果脚本仅包含一组标准系统命令,没有任何内部 Shell 指令,首行或 #!可以去掉。

如何在 Linux 操作系统执行 Shell 脚本

调用一个脚本脚本的常规语法是:

$脚本名参数1...参数N

另一种可能的形式是明确指定将执行这个脚本的 Shell,如下:

$shell脚本名参数1...参数N

示例:

$/bin/bash参数1...参数N[bash脚本]
$/bin/ksh参数1...参数N[ksh脚本]
$/bin/sh参数1...参数N[sh脚本]

对于没有 #!作为首行,仅包含基础系统命令的脚本,示例如下:

###脚本仅包含标准系统命令
cd/home/$USER
mkdirtmp
echo"tmpdirectorycreatedunder/home/$USER"

使它可执行并运行,如下:

$chmod+x脚本名
$./脚本名
启用 Shell 脚本调试模式的方法

大神教你如何在 Linux 中启用 Shell 脚本的调试模式

下面是主要的 Shell 脚本调试选项:

  • -v(verbose 的简称) - 告诉 Shell 读取脚本时显示所有行,激活详细模式。
  • -n(noexec 或 no ecxecution 简称) - 指示 Shell 读取所有命令然而不执行它们,这个选项激活语法检查模式。
  • -x(xtrace 或 execution trace 简称) - 告诉 Shell 在终端显示所有执行的命令和它们的参数。 这个选项是启用 Shell 跟踪模式。
1、 改变 Shell 脚本首行

第一个机制是改变 Shell 脚本首行,如下,这会启动脚本调试。

#!/bin/sh选项

其中, 选项可以是上面提到的一个或多个调试选项。

2、 调用 Shell 调试选项

第二个是使用如下调试选项启动 Shell,这个方法也会打开整个脚本调试。

$shell选项参数1...参数N

示例:

$/bin/bash选项参数1...参数N
3、 使用 Shell 内置命令 set

第三个方法是使用内置命令 set去调试一个给定的 Shell 脚本部分,如一个函数。这个机制是重要的,因为它让我们可以去调试任何一段 Shell 脚本。

我们可以如下使用 set命令打开调试模式,其中选项是之前提到的所有调试选项。

$set选项

启用调试模式:

$set-选项

禁用调试模式:

$set+选项

此外,如果我们在 Shell 脚本不同部分启用了几个调试模式,我们可以一次禁用所有调试模式,如下:

$set-

关于启用 Shell 脚本调试模式,先讲这些。正如我们看到的,我们可以调试一整个 Shell 脚本或者特定部分脚本。

在此系列下面的两篇文章中,我们会举例介绍如何使用 Shell 脚本调试选项,进一步了解详细、语法检查、跟踪调试模式。

更重要的是,关于这个指南,欢迎通过下面评论提出任何问题或反馈。

原文来自:


延伸 · 阅读

精彩推荐
  • Linuxlinux grep搜索命令的使用方法

    linux grep搜索命令的使用方法

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则...

    未知3502019-05-20
  • LinuxLinux chkconfig命令浅析

    Linux chkconfig命令浅析

    这篇文章主要介绍了Linux chkconfig命令浅析,着重介绍chkconfig命令的语法和参数的使用,配有中文说明,易记易懂,需要的朋友可以参考下 ...

    Linux命令大全2182019-11-06
  • LinuxWindows与Linux换行符差别所引起的问题的解决方法

    Windows与Linux换行符差别所引起的问题的解决方法

    这篇文章主要介绍了Windows与Linux换行符差别所引起的问题的解决方法,文中提出了实用dos2unix的方法,需要的朋友可以参考下 ...

    moon's blog6132019-09-19
  • Linux看了这篇文章还没彻底搞懂Linux分页机制?我自罚三杯!

    看了这篇文章还没彻底搞懂Linux分页机制?我自罚三杯!

    当操作系统需要分配一大块、连续的内存空间给用户程序时,映射表中的表项可以指向多个不连续的物理页,反正用户程序接触不到这一层(用户程序只与虚...

    IOT物联网小镇11992021-09-29
  • LinuxLinux内核增加HDF驱动子系统

    Linux内核增加HDF驱动子系统

    HDF驱动子系统是OpenHarmony重要的特色功能之一,其主要的功能是实现驱动程序在多内核多平台的物联网环境,实现一次驱动开发,多端部署。...

    鸿蒙社区12022021-12-15
  • LinuxLinux通过BFO简单安装Fedora的步骤

    Linux通过BFO简单安装Fedora的步骤

    使用传统的方法安装Fedora非常浪费时间,有什么简单的方法来安装Fedora呢?下面以图文的形式为大家介绍下Linux使用BFO安装Fedora的方法 ...

    系统之家2242019-10-15
  • Linuxlinux shutdown关闭系统命令使用介绍

    linux shutdown关闭系统命令使用介绍

    shutdown命令是最常用的关闭系统命令,不仅可以用于立即关闭系统,还可以在指定时间关闭系统 ...

    Linux教程网7272019-12-27
  • LinuxLinux下修复inittab文件丢失的两种方法

    Linux下修复inittab文件丢失的两种方法

    linux系统图下inittab文件丢失了该怎么办?/etc/inittab文件是linux系统初始化配置文件,该文件出现错误或者丢失时,可能导致无法启动系统,下面分享两种解决...

    脚本之家6892019-10-12