导读 | 脚本是存储在一个文件的一系列命令。在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户能够在一个文件中存储全部命令,反复调用该文件屡次从新执行命令。 |
在学习脚本或写脚本的初期阶段,咱们一般从写小脚本或者几行命令的短脚本开始,调试这样的脚本时咱们一般无非就是经过观察它们的输出来确保其正常工做。html
然而,当咱们开始写很是长或上千行命令的高级脚本,例如改变系统设置的脚本,在网络上执行关键备份 等等,咱们会意识到仅仅看脚本输出是不足以在脚本中找到 Bug 的!linux
所以,在 Linux 系列中这篇介绍 Shell 脚本调试, 咱们将看看如何启用 Shell 脚本调试,而后在以后的系列中解释不一样的 Shell 脚本调试模式以及如何使用它们。shell
如何开始写一个脚本bash
一个脚本与其它文件的区别是它的首行,它包含 #!(She-Bang - 释伴:定义文件类型)和路径名(解释器路径),通知系统该文件是一个命令集合,将被指定程序(解释器)解释。网络
下面是不一样类型脚本首行示例:函数
#!/bin/sh [sh 脚本] #!/bin/bash [bash 脚本] #!/usr/bin/perl [perl 程序] #!/bin/awk -f [awk 脚本]
注意:若是脚本仅包含一组标准系统命令,没有任何内部 Shell 指令,首行或#!能够去掉。学习
如何在 Linux 操做系统执行 Shell 脚本操作系统
调用一个脚本脚本的常规语法是:调试
$ 脚本名 参数1 ... 参数N
另外一种可能的形式是明确指定将执行这个脚本的 Shell,以下:htm
$ shell 脚本名 参数1 ... 参数N
示例:
$ /bin/bash 参数1 ... 参数N [bash 脚本] $ /bin/ksh 参数1 ... 参数N [ksh 脚本] $ /bin/sh 参数1 ... 参数N [sh 脚本]
对于没有 #!做为首行,仅包含基础系统命令的脚本,示例以下:
### 脚本仅包含标准系统命令 cd /home/$USER mkdir tmp echo "tmp directory created under /home/$USER"
使它可执行并运行,以下:
$ chmod +x 脚本名 $ ./脚本名
启用 Shell 脚本调试模式的方法
下面是主要的 Shell 脚本调试选项:
一、 改变 Shell 脚本首行
第一个机制是改变 Shell 脚本首行,以下,这会启动脚本调试。
#!/bin/sh 选项
其中, 选项能够是上面提到的一个或多个调试选项。
二、 调用 Shell 调试选项
第二个是使用以下调试选项启动 Shell,这个方法也会打开整个脚本调试。
$ shell 选项 参数1 ... 参数N
示例:
$ /bin/bash 选项 参数1 ... 参数N
三、 使用 Shell 内置命令 set
第三个方法是使用内置命令set 去调试一个给定的 Shell 脚本部分,如一个函数。这个机制是重要的,由于它让咱们能够去调试任何一段 Shell 脚本。
咱们能够以下使用 set命令打开调试模式,其中选项是以前提到的全部调试选项。
$ set 选项
启用调试模式:
$ set -选项
禁用调试模式:
$ set +选项
此外,若是咱们在 Shell 脚本不一样部分启用了几个调试模式,咱们能够一次禁用全部调试模式,以下:
$ set -
关于启用 Shell 脚本调试模式,先讲这些。正如咱们看到的,咱们能够调试一整个 Shell 脚本或者特定部分脚本。
在此系列下面的两篇文章中,咱们会举例介绍如何使用 Shell 脚本调试选项,进一步了解详细、语法检查、跟踪调试模式。
更重要的是,关于这个指南,欢迎经过下面评论提出任何问题或反馈。