美文网首页
调试shell脚本

调试shell脚本

作者: 钾肥尔德 | 来源:发表于2019-06-25 20:33 被阅读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

    相关文章

      网友评论

          本文标题:调试shell脚本

          本文链接:https://www.haomeiwen.com/subject/sitfcctx.html