`

第十三章 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 系統時可以更加得心應手。

    Execute shell script on remote host using ssh.sh

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

    shell script

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

    解决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 交互语法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