mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-10 22:21:11 +08:00
校对完毕
校对完毕
This commit is contained in:
parent
69da54e897
commit
3064f965aa
@ -1,22 +1,19 @@
|
||||
如何在 Linux 中启用 Shell 脚本 调试模式
|
||||
如何在 Linux 中启用 Shell 脚本的调试模式
|
||||
============================================================
|
||||
|
||||
|
||||
脚本是一个存储命令的简单列表,而不是在运行的终端按顺序一个一个输入命令,一个系统用户可以存储所有命令在一个文件中反复调用该文件多次重新执行命令
|
||||
脚本是存储在一个文件的一系列命令。在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令。
|
||||
|
||||
在 [学习脚本][1] 或写脚本的初期阶段,我们通常从写小脚本或者几行命令的短脚本开始,调试这样的脚本时我们通常无非就是通过观察它们的输出来确保其正常工作。
|
||||
|
||||
在 [学习脚本][1] 或写脚本的初期阶段,我们通常开始写小脚本或者几行命令短脚本,我们通常打算调试这样的脚本无非就是通过观察它们的输出来确保正常工作。
|
||||
然而,当我们开始写非常长或上千行命令的高级脚本,例如改变系统设置的脚本,[在网络上执行关键备份][2] 等等,我们会意识到仅仅看脚本输出是不足以在脚本中找到 Bugs 的!
|
||||
|
||||
|
||||
然而,当我们开始写非常长或上千行命令的高级脚本,例如改变系统设置的脚本。
|
||||
[在网络执行关键备份][2] 等等,我们会实现他们仅仅看脚本输出是不足以在脚本中找到 Bugs 的!
|
||||
|
||||
|
||||
因此,在 Linux 系列操作系统中 调试 Shell 脚本, `我们将会通过如何启用 Shell 脚本调试 ` 移动到解释不同的 Shell 脚本调试模式和在后序如何使用它们。
|
||||
因此,在 Linux 系列中这篇介绍 Shell 脚本调试, 我们将看看如何启用 Shell 脚本调试,然后在之后的系列中解释不同的 Shell 脚本调试模式以及如何使用它们。
|
||||
|
||||
### 如何开始写一个脚本
|
||||
|
||||
一个脚本与其它文件的区别是它的首行,它包含 `#!` (She-Bang - 定义文件类型) 和路径名(路径解释器) 通知系统该文件是一个命令集合,它会被指定程序(解释器)解释。
|
||||
一个脚本与其它文件的区别是它的首行,它包含 `#!` (She-Bang - 定义文件类型) 和路径名(解释器路径) ,通知系统该文件是一个命令集合,将被指定程序(解释器)解释。
|
||||
|
||||
|
||||
下面是不同类型脚本 `首行` 示例
|
||||
|
||||
@ -27,7 +24,7 @@
|
||||
#!/bin/awk -f [For awk scripting]
|
||||
```
|
||||
|
||||
Note: 首行或 `#!` 可以离开脚本仅包含一组标准系统命令,没有任何内部 Shell 指令。
|
||||
Note: 如果脚本仅包含一组标准系统命令,没有任何内部 Shell 指令,首行或 `#!` 可以去掉。
|
||||
|
||||
### 如何在 Linux 操作系统执行 Shell 脚本
|
||||
|
||||
@ -38,7 +35,7 @@ Note: 首行或 `#!` 可以离开脚本仅包含一组标准系统命令,没
|
||||
$ script_name argument1 ... argumentN
|
||||
```
|
||||
|
||||
其他可能的形式是明确指定 Shell 它将执行这个脚本 ,如下:
|
||||
另一种可能的形式是明确指定将执行这个脚本的 Shell,如下:
|
||||
|
||||
```
|
||||
$ shell script_name argument1 ... argumentN
|
||||
@ -52,7 +49,7 @@ $ /bin/ksh script_name argument1 ... argumentN [For ksh scripting]
|
||||
$ /bin/sh script_name argument1 ... argumentN [For sh scripting]
|
||||
```
|
||||
|
||||
对于没有 `#!` 的脚本作为首行仅包含基础系统命令比如下面这个:
|
||||
对于没有 `#!` 作为首行,仅包含基础系统命令的脚本,示例如下:
|
||||
|
||||
```
|
||||
#script containing standard system commands
|
||||
@ -61,35 +58,35 @@ mkdir tmp
|
||||
echo "tmp directory created under /home/$USER"
|
||||
```
|
||||
|
||||
简单的使它可执行并运行 如下:
|
||||
使它可执行并运行,如下:
|
||||
|
||||
```
|
||||
$ chmod +x script_name
|
||||
$ ./script_name
|
||||
```
|
||||
|
||||
### 启用 Shell 脚本调试模式方法
|
||||
### 启用 Shell 脚本调试模式的方法
|
||||
|
||||
下面是唯一 Shell 脚本调试选项:
|
||||
下面是主要的 Shell 脚本调试选项:
|
||||
|
||||
1. `-v` (short for verbose) - 告诉 Shell 在脚本中显示所有行当他们阅读时激活详细模式。
|
||||
2. `-n` (short for noexec or no ecxecution) - 指示 Shell 读取所有命令 然而不执行它们,这个选项激活语法检查模式。
|
||||
3. `-x` (short for xtrace or execution trace) - 告诉 Shell 当它们执行在终端显示所有命令和他们的参数。 这个选项是启用 Shell 跟踪模式。
|
||||
- `-v` (verbose 简称) - 告诉 Shell 读取脚本时显示所有行,激活详细模式。
|
||||
- `-n` (noexec 或 no ecxecution 简称) - 指示 Shell 读取所有命令 然而不执行它们,这个选项激活语法检查模式。
|
||||
- `-x` (xtrace 或 execution trace 简称) - 告诉 Shell 在终端显示所有执行命令和他们的参数。 这个选项是启用 Shell 跟踪模式。
|
||||
|
||||
|
||||
#### 1\. 改变 Shell 脚本首行
|
||||
|
||||
第一个机制是改变 Shell 脚本首行 如下,这会启用调试整个脚本。
|
||||
第一个机制是改变 Shell 脚本首行,如下,这会启动脚本调试。
|
||||
|
||||
```
|
||||
#!/bin/sh option(s)
|
||||
```
|
||||
|
||||
在上面形式, 选项可以是一个或一个组合的调试选项
|
||||
其中, 选项可以是上面提到的一个或多个调试选项。
|
||||
|
||||
#### 2.\ 调用 Shell 调试选项
|
||||
|
||||
第二个调用 Shell 调试选项 如下,这个方法也会打开整个脚本调试。
|
||||
第二个是使用如下调试选项启动 Shell,这个方法也会打开整个脚本调试。
|
||||
|
||||
```
|
||||
$ shell option(s) script_name argument1 ... argumentN
|
||||
@ -103,9 +100,10 @@ $ /bin/bash option(s) script_name argument1 ... argumentN
|
||||
|
||||
#### 3\. 使用 Shell 内置命令 set
|
||||
|
||||
第三个方法是使用 内置命令 set 去调试一个给定的 Shell 脚本部分,如一个函数这个组合式重要的 它允许我们去激活调试任何一段 Shell 脚本。
|
||||
第三个方法是使用内置命令 set 去调试一个给定的 Shell 脚本部分,如一个函数。这个机制是重要的,因为它让我们可以去调试任何一段 Shell 脚本。
|
||||
|
||||
我们可以打开调试模式在下面形式使用 set 命令,其中选项是所有选项。
|
||||
We can turn on debugging mode using set command in form below, where option is any of the debugging options.
|
||||
我们可以如下使用 set 命令打开调试模式,其中选项是之前提到的所有 debugging 选项。
|
||||
|
||||
```
|
||||
$ set option
|
||||
@ -123,19 +121,18 @@ $ set -option
|
||||
$ set +option
|
||||
```
|
||||
|
||||
此外,如果我们在 Shell 脚本中在启用几个调试模式在不同的部分,我们可以马上禁用它们,就像这样:
|
||||
此外,如果我们在 Shell 脚本不同部分启用了几个调试模式,我们可以一次禁用所有调试模式,如下:
|
||||
|
||||
|
||||
```
|
||||
$ set -
|
||||
```
|
||||
|
||||
关于启用 Shell 脚本调试模式,先讲这些。正如我们看到的,我们可以调试一整个 Shell 脚本或者特定部分脚本。
|
||||
|
||||
现在启用 Shell 脚本调试模式, 正如我们看到的,我们可以调试一整个 Shell 脚本或者特定部分脚本。
|
||||
在此系列下面的两篇文章中,我们会举例介绍如何使用 Shell 脚本调试选项,进一步了解 详细(verbose)、语法检查(syntax checking)、 跟踪(tracing)调试模式。
|
||||
|
||||
在下两个文章,我们会讨论如何使用 Shell 脚本调试选项去解释冗长、语法检查、 Shell 跟踪调试模式示例!
|
||||
|
||||
更重要的是,不要忘记去提问关于这个 Guide 的任何问题或也许提供给我们反馈通过下面评论部分,直到那时,保持 Tecmint 连接。
|
||||
更重要的是,关于这个指南,欢迎通过下面评论提出任何问题或反馈。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user