关于shell脚本的调试在我的博客“shell学习与使用,边学边用之二”中
后面关于"set -x"命令选项的使用就已经够了。
下面一些当作补充。
一:最原始最常用的调试技术:
使用echo和print命令。
二:根据调试层次控制输出。使用echo指令的不足之处在于,当程序员不想显示这些输出的时候。就不得不注释掉或者删除这些指令。如果下次要再调试又要再次添加。麻烦又容易出错。
借鉴C语言中常用的控制调试输出技巧,即使用
#define DEBUG 1
#ifdef DEBUG
printf("messages ……");
#endif
如果不需要输出调试信息时将#define DEBUG 1注释掉即可。
要输出调试信息时再将注释删除即可。
在shell脚本中也可以使用一些如debug标志然后输出的方式来做。然后调用一些专门输出调试信息的函数测试如下:
banxi1988@banxi:~/work/shell$ bash -n set_x_disable.sh
banxi1988@banxi:~/work/shell$ ./set_x_disable.sh
Can you write device drivers(y/n)?y
DEBUG:call log_debug
Wow,you must be very skilled!
banxi1988@banxi:~/work/shell$ cat set_x_disable.sh
#!/bin/bash
#set -x
#set -v
DEBUG=1
log_debug() {
if [ $DEBUG -gt 0 ];then
if [ $# -lt 1 ]
then
echo "no message";
else
echo "DEBUG:$1";
fi
fi
}
echo -n "Can you write device drivers(y/n)?"
read answer
answer=`echo $answer | tr [a-z] [A-Z]`
if [ $answer = Y ]
then
log_debug "call log_debug"
echo "Wow,you must be very skilled!"
else
echo "Neither can I,I'm just an example shell script"
fi
banxi1988@banxi:~/work/shell$
根据上面还可以写出其它级别的调试日志输出函数。
根据java中的log4j来说还可以有log_info(),log_warn(),log_error(),log_fatal()等
日志输出函数。
=================未完待续……==============
分享到:
相关推荐
在IT行业中,shell脚本...学习和掌握这些shell技能对于系统管理员、运维人员以及任何需要与Linux日志打交道的人来说都至关重要。记得实践是检验真理的唯一标准,通过实际操作和调试,你可以更好地理解和应用这些知识。
**SHELL日志功能——log4sh详解** 在IT运维和系统管理中,日志记录是不可或缺的一部分。它能够帮助我们追踪系统行为、诊断错误、优化性能以及满足合规性要求。`log4sh`,一个专为Shell脚本设计的日志模块,提供了...
**Shell脚本学习指南** Shell脚本是Linux和Unix系统中的强大工具,它允许用户通过编写脚本来自动化一系列命令操作,极大地提高了系统管理和任务执行的效率。本文将深入探讨shell脚本的基础知识,包括语法、变量、...
10. **脚本示例与实战**:通过实际例子来应用所学知识,解决具体问题,例如系统维护、日志分析等。 通过阅读“Shell脚本学习指南”,你不仅可以理解Shell脚本的基础,还能逐步掌握更高级的技巧,提升在Linux环境下...
**Shell脚本学习指南** Shell脚本是一种在Unix/Linux操作系统中使用的编程语言,它允许用户通过命令行界面执行一系列操作,实现自动化任务处理。作为学习Shell脚本的指南,这本书籍旨在帮助读者深入理解Shell脚本...
- **日志记录**:将关键信息输出到日志文件中,有助于追踪问题原因。 - 示例: ```bash echo "[$(date)] User: $USER" >> script.log ``` #### 五、Shell脚本最佳实践 - **遵循一致的编码风格**:统一的缩进、...
在Shell脚本学习中,虽然这不属于核心内容,但有可能涉及如何通过Shell脚本来控制或与硬件设备(如J-Link)交互,例如,自动下载固件或收集调试信息。 "HDSC"可能是一个目录或者文件的名称,具体含义不明确。如果它...
- **伪信号**:在Shell调试过程中,有三种特殊的信号,被称为“伪信号”,分别是`EXIT`、`ERR`和`DEBUG`。 - **`EXIT`信号**:在函数退出或者脚本整体执行结束后触发。 - **`ERR`信号**:当某条命令执行失败...
5. **调试技巧**:学习使用set命令进行调试,找出脚本中的错误。 最后,`crontab.pdf`文档会讲解Linux的任务调度器`crontab`: 1. **crontab文件结构**:理解每行代表一个定时任务,包括时间字段(分钟、小时、...
9. **脚本调试**:学会使用set命令开启调试模式,以及使用echo和printf进行输出调试。 10. **Shell脚本的最佳实践**:包括良好的注释习惯、错误处理机制、避免命令注入漏洞等,以提高脚本的可读性和安全性。 通过...
- **管道与重定向**:`|`用于将一个命令的输出作为另一个命令的输入,`>`和`分别用于重定向输出和输入。 - **grep/awk/sed**:强大的文本处理工具,常用于搜索、替换和格式化文本。 3. **Shell脚本结构** - **...
在Linux系统中,Shell是一个用户与操作系统交互的接口,例如Bash(Bourne-Again SHell)是最常见的Shell类型,其他还有Sh、Csh、Ksh、Zsh等。它们提供了命令行环境,让用户能够执行命令、管理文件和进行系统操作。 ...
### 发现服务超过一个小时不打日志进行重启Shell脚本详解 #### 背景介绍 在运维领域,为了确保应用程序或服务的稳定运行,通常会编写一系列的监控脚本来实时监测服务的状态。当发现服务异常时(比如长时间未产生...
9. **错误处理和调试**:学习如何捕获和处理脚本运行时的错误,以及如何使用set命令进行调试。 10. **脚本执行权限**:理解chmod命令用于设置文件权限,特别是让脚本可执行的+x权限。 11. **环境变量**:了解环境...
8. **脚本调试与优化**:学习如何调试Shell脚本,找出潜在的错误,以及如何编写更高效、可读性更强的脚本。 9. **脚本实例**:通过实际的脚本示例,如自动备份、日志分析、系统监控等,将理论知识应用到实践中。 ...
### Shell学习心得 #### Shell简介 Shell是一种计算机操作系统壳层,用作用户与操作系统内核之间的接口。在Unix、Linux及类Unix系统中,Shell既是一个命令解释器,也允许进行程序设计。Shell脚本是用Shell语言编写...
MySQL是世界上最受欢迎的关系型数据库管理系统(RDBMS)之一,尤其在Web应用程序中广泛使用。它以其高效、灵活和开源的特性赢得了开发者们的青睐。Linux Shell则是Linux操作系统中用于交互式命令行操作和脚本编程的...