`

第十三章 shell script 的追踪与 debug

 
阅读更多
scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是否有问题呢?呵呵!当然是有的!我们就直接以 bash 的相关参数来进行判断吧!

[root@www ~]# sh [-nvx] scripts.sh
选项与参数:
-n  :不要运行 script,仅查询语法的问题;
-v  :再运行 sccript 前,先将 scripts 的内容输出到萤幕上;
-x  :将使用到的 script 内容显示到萤幕上,这是很有用的参数!

范例一:测试 sh16.sh 有无语法的问题?
[root@www ~]# sh -n sh16.sh 
# 若语法没有问题,则不会显示任何资讯!

范例二:将 sh15.sh 的运行过程全部列出来~
[root@www ~]# sh -x sh15.sh 
+ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
+ export PATH
+ for animal in dog cat elephant
+ echo 'There are dogs.... '
There are dogs....
+ for animal in dog cat elephant
+ echo 'There are cats.... '
There are cats....
+ for animal in dog cat elephant
+ echo 'There are elephants.... '
There are elephants....


请注意,上面范例二中运行的结果并不会有颜色的显示!鸟哥为了方便说明所以在 + 号之后的数据都加上颜色了! 在输出的信息中,在加号后面的数据其实都是命令串,由於 sh -x 的方式来将命令运行过程也显示出来, 如此使用者可以判断程序码运行到哪一段时会出现相关的资讯!这个功能非常的棒!透过显示完整的命令串, 你就能够依据输出的错误资讯来订正你的脚本了!

熟悉 sh 的用法,将可以使你在管理 Linux 的过程中得心应手!至於在 Shell scripts 的学习方法上面,需要『多看、多模仿、并加以修改成自己的样式!』 是最快的学习手段了!网络上有相当多的朋友在开发一些相当有用的 scripts ,若是你可以将对方的 scripts 拿来,并且改成适合自己主机的样子!那么学习的效果会是最快的呢!

另外,我们 Linux 系统本来就有很多的服务启动脚本,如果你想要知道每个 script 所代表的功能是什么? 可以直接以 vim 进入该 script 去查阅一下,通常立刻就知道该 script 的目的了。 举例来说,我们之前一直提到的 /etc/init.d/syslog ,这个 script 是干嘛用的? 利用 vi 去查阅最前面的几行字,他出现如下资讯:

# description: Syslog is the facility by which many daemons use to log \
# messages to various system log files.  It is a good idea to always \
# run syslog.
### BEGIN INIT INFO
# Provides: $syslog
### END INIT INFO


简单的说,这个脚本在启动一个名为 syslog 的常驻程序 (daemon),这个常驻程序可以帮助很多系统服务记载她们的登录档 (log file), 我们的 Linux 建议你一直启动 syslog 是个好主意!嘿嘿!简单的看看您就知道啥是啥啦!

另外,本章所有的范例都可以在 http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts/scripts-v3.tar.bz2 里头找到喔!加油~

转自:http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_6.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    shell script编程学习笔记

    ### Shell Script 编程学习笔记 #### 一、Shell 脚本初窥 ##### 示例: ```bash #!/bin/sh # 第1行:指定脚本解释器(声明使用的shell名称),这里是用/bin/sh做解释器的。“#!”是一个约定的标记 cd ~ # 第2行:...

    shell script 语言教程

    #### 三、Shell Script 的基本结构 Shell Script 通常由一系列的命令组成,这些命令按行组织。每一行可以是一个命令、注释或者流程控制语句。 1. **多行命令**:如果一行命令过长,可以通过在行尾添加反斜杠 (`\`)...

    包含了几乎所有 unix shell script编程特性的 unix shell script 完整项目, 基于 IBM AIX,附注释.rar

    在写IBM AIX K Shell script时,感觉不那么友好,主要是有一些格式细节要求比较严格,不太习惯,后来写惯了也就好了,下面的三个script是我为公司最近写的 一个自动备份shell script,基本要求就是每天晚上23:00自动跑起来...

    Shell Script教程

    身為 UNIX 系統管理者除了要熟悉 UNIX 指令外,我們最好學會幾種 scripts 語言,例如 shell ...本章將介紹 Shell script 的基本功能及語法,期望讀者可以經由學習 Shell scripts 讓使用 UNIX 系統時可以更加得心應手。

    解决idea would you like to install a shell script formatter?的问题 直接下载 shfmt.zip

    shfmt_v3.1.2_windows_amd64.exe shfmt_v3.1.2_windows_386.exe 解决idea would you like to install a shell script formatter?的问题

    shell script

    ### Shell Script 在 UNIX 系统中的应用与结构 在计算机科学领域中,Shell 脚本(Shell Script)是 UNIX 和类 UNIX 操作系统(如 Linux)中的一种强大的自动化工具。通过 Shell 脚本,用户可以编写一系列命令来执行...

    Execute shell script on remote host using ssh.sh

    Jenkins构建Execute shell script on remote host using ssh命令;JenkinsSSH执行命令;

    shell script 交互语法

    shell script 交互语法shell script 交互语法shell script 交互语法shell script 交互语法shell script 交互语法shell script 交互语法shell script 交互语法shell script 交互语法

    shell script详解

    #### 一、Shell Script简介与特点 Shell Script是一种用于自动化任务处理的脚本语言,广泛应用于Linux及类Unix系统中。通过Shell Script,用户可以编写一系列命令来实现复杂的操作流程,提高工作效率。 #### 二、...

    shell script语言教程

    #### 六、Shell Script示例与总结 - **Shell Summary**:提供Shell Script的基本语法和命令汇总,方便快速查阅。 - **Shell Script实例**:提供实际应用中的Shell Script示例,帮助理解具体应用场景。 - **grep简介...

    Linux与UNIX Shell编程指南.rar

    第十三章 登录环境 第十四章 环境和SHELL变量 第十五章 小结 第四部分 基础SHELL编程 第十六章 SHELL脚本介绍 第十七章 条件测试 第十八章 控制流结构 第十九章 SHELL函数 第二十章 向脚本传递参数 第二一章 创建...

    ShellScript

    对UNIX的用户与系统管理者而言,编写Shell脚本是必须的工作,它可以让你快速地控制与定制任何UNIX系统的强大功能。有了Shell脚本,你可以结合基本的UNIX文本与文件处理命令来消化数据,以及自动化重复的工作。一旦你...

    shell_script.zip

    "shell_script.zip"这个压缩包文件包含了多个与shell脚本相关的文件,如POL_TPOL_COVER.sh、RERUN_AGENCY.sh等,这表明这些脚本可能是用于特定系统或应用程序的自动化操作。 1. **Shell脚本基础**:Shell脚本是基于...

    shell script程序设计

    这是因为Shell Script中的关键字实际上是通过命令解析的,而命令与参数之间必须通过空格分隔。例如: ``` command arg1 arg2 ``` 如果命令和参数之间没有空格,则Shell无法正确识别命令及其参数。同样,换行符(`\...

    Execute shell script on remote host using ssh(最新版).txt

    在Jenkins构建springboot项目自动部署的时候,配置远程执行Dockerfile所在服务器的SSH命令,这里把完整的命令贴出来,详细搭建过程见我的博客《基于Jenkins+Gitlab+Docker实现SpringBoot项目自动部署》

    shell_script.tar.gz

    shell_script.tar.gz

Global site tag (gtag.js) - Google Analytics