调试shell脚本

2019-06-25  本文已影响0人  钾肥尔德

如何开始写一个脚本

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

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

1.  `#!/bin/sh [sh 脚本]`
2.  `#!/bin/bash  [bash  脚本]` 
3.  `#!/usr/bin/perl [perl 程序]`
4.  `#!/bin/awk -f [awk 脚本]` 

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

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

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

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

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

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

示例:

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

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

1.  `### 脚本仅包含标准系统命令`
2.  `cd  /home/$USER`
3.  `mkdir tmp`
4.  `echo  "tmp directory created under /home/$USER"`

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

1.  `$ chmod  +x 脚本名`
2.  `$ ./脚本名` 

启用 Shell 脚本调试模式的方法

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

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

1、 改变 Shell 脚本首行

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

1.  `#!/bin/sh 选项`

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

2、 调用 Shell 调试选项

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

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

示例:

1.  `$ /bin/bash  选项  参数1  ...  参数N`

3、 使用 Shell 内置命令 set

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

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

1.  `$ set  选项` 

启用调试模式:

1.  `$ set  -选项`

禁用调试模式:

1.  `$ set  +选项`

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

1.  `$ set  -`

via: https://linux.cn/article-8028-1.html

上一篇 下一篇

猜你喜欢

热点阅读