http://blog.csdn.net/gsnumen/article/details/7268842
shell脚本调试 -- 运行日志1
模块文件: mymod_log
# mymod_log
while [[ ! -z "$1" ]]; do # echo "arg: $1"; case "$1" in "noall") sed -e '/^\([ \t]*\)mydebug/d'\ -e '/^\([ \t]*\)myrunlog/d'\ -e '/^\([ \t]*\)myerrlog/d'\ -e 's/^\([ \t]*\)\<source\>\(.*\)\<mymod_log\>\(.*\)$/#\1source\2mymod_log\3/g'\ "$0" |/bin/bash exit $? ;; "nodebug") #mydebug delete sed_rule="${sed_rule} -e '/^\([ \t]*\)mydebug/d'" ;; "norunlog") #myrunlog delete sed_rule="${sed_rule} -e '/^\([ \t]*\)myrunlog/d'" ;; "noerrlog") #myerrlog delete sed_rule="${sed_rule} -e '/^\([ \t]*\)myerrlog/d'" ;; *) ;; esac shift; done if [[ -z "${sed_rule}" ]];then sed -e 's/^\([ \t]*\)mydebug/\1echo "$FUNCNAME:$LINENO:DEBUG: "/g'\ -e 's/^\([ \t]*\)myrunlog/\1echo "$FUNCNAME:$LINENO:RUN: "/g'\ -e 's/^\([ \t]*\)myerrlog/\1echo 1>\&2 "$FUNCNAME:$LINENO:ERROR: "/g'\ -e 's/^\(.*\)\<source\>\(.*\)\<mymod_log\>\(.*\)$/#\1source\2mymod_log\3/g'\ "$0" |/bin/bash else # echo "${sed_rule}"; eval "sed ${sed_rule} $0" |\ sed 's/^\([ \t]*\)\<source\>\(.*\)\<mymod_log\>\(.*\)$/#\1source\2mymod_log\3/g'|\ sed -e 's/^\([ \t]*\)mydebug/\1echo "$FUNCNAME:$LINENO:DEBUG: "/g'\ -e 's/^\([ \t]*\)myrunlog/\1echo "$FUNCNAME:$LINENO:RUN: "/g'\ -e 's/^\([ \t]*\)myerrlog/\1echo 1>\&2 "$FUNCNAME:$LINENO:ERROR: "/g'\ | /bin/bash fi exit $? |
测试文件: mymod_log_test.sh
#!/bin/bash
# mymod_log_test.sh source ./mymod_log norunlog; function check_apache() { mydebug "apache [OK]"; myrunlog "apache [OK]"; myerrlog "apache [FAIL]"; :; } function check_mysql() { mydebug "mysql [OK]"; myrunlog "mysql [OK]"; myerrlog "mysql [FAIL]"; :; } function check_all() { check_apache; check_mysql; } check_all; |
测试结果:
当为: source ./mymod_log norunlog; 时
$ ./mymod_log_test.shcheck_apache:8:DEBUG: apache [OK]check_apache:9:ERROR: apache [FAIL]check_mysql:16:DEBUG: mysql [OK]check_mysql:17:ERROR: mysql [FAIL]
当为 source ./mymod_log norunlog noerrlog;
$ ./mymod_log_test.shcheck_apache:8:DEBUG: apache [OK]check_mysql:15:DEBUG: mysql [OK]
当为: source ./mymod_log noall;
$ ./mymod_log_test.sh$
相关推荐
### Shell脚本调试技术 在IT领域中,Shell脚本是一种强大的工具,广泛应用于Unix/Linux系统管理、自动化任务处理等领域。然而,随着脚本复杂度的增加,如何有效地调试Shell脚本成为了一项挑战。本文将详细介绍几种...
4. **错误处理和日志记录**:为了提高代码的健壮性和可维护性,此库可能包含异常处理机制和日志记录功能,方便开发者调试和监控应用的运行状态。 5. **配置管理**:可能提供配置文件读取和写入的功能,帮助用户保存...
#### 二、Shell脚本调试技术介绍 为了更好地解决逻辑错误,Shell提供了多种调试工具和技术,其中包括`trap`、`tee`、调试钩子和Shell选项等。 ##### 1. `trap`命令 `trap`是Linux中的一个内置命令,主要用于捕获...
`说明.txt` 文件可能是对整个过程的详细说明,包括如何运行shell脚本,脚本的工作原理,以及可能遇到的问题和解决方案。阅读这份说明有助于理解脚本的使用方法和潜在问题。 执行Oracle SQL脚本的shell脚本通常包含...
1. **基础语法**:Shell脚本的基础包括变量定义、条件语句(if-else)、循环结构(for, while)、函数定义等。变量在Shell中用来存储数据,可以通过"$"符号来引用。条件语句和循环结构用于控制程序的流程,根据不同...
3. **执行脚本**:要运行Shell脚本,需赋予脚本执行权限(`chmod +x scriptname.sh`)然后通过`./scriptname.sh`执行。 二、Shell脚本语法 1. **变量**:Shell中的变量无需预先声明,直接赋值即可。如`NAME="John...
在Android系统中,logcat和kernel log是两个重要的日志系统,它们记录了系统的运行状态、错误信息和其他调试数据。shell脚本则是Linux/Android环境中进行自动化任务的强大工具。本篇将详细介绍如何利用shell脚本来...
这个压缩包"Linux运维-运维工具箱-18个 Shell脚本经典案例-视频1-2.zip"提供了18个实用的Shell脚本示例,适合初学者和有经验的运维人员学习参考。通过观看视频1-2,我们可以深入理解这些脚本的设计思路和应用场景。 ...
**Shell脚本学习指南** Shell脚本是一种在Unix/Linux操作系统中使用的编程语言,它允许用户通过命令行界面执行一系列操作,实现自动化任务处理。作为学习Shell脚本的指南,这本书籍旨在帮助读者深入理解Shell脚本...
Linux Shell脚本是一种强大的自动化工具,它允许用户通过命令行接口执行一系列操作,极大地提高了工作效率。在Linux系统中,Shell脚本是用Bash(Bourne-Again SHell)或其他兼容的Shell编写的,例如KornShell (ksh) ...
8. **脚本调试**:了解如何设置断点、跟踪和调试Shell脚本。 掌握这些知识点后,你将能够编写出功能强大、灵活多变的Shell脚本,无论是在日常工作中还是在项目开发中,都能发挥巨大作用。不过,记得实践是提升技能...
在Linux操作系统中,Shell脚本是一种强大的工具,用于自动化日常任务、管理系统以及执行一系列命令。"Linux下101个shell脚本"是一份宝贵的资源,涵盖了从基础到高级的各种shell脚本示例,对于想要深入学习Linux ...
Shell脚本本质上就是一系列的Shell命令,它们被写入到一个文本文件中,然后通过执行这个文件来运行这些命令。在“Shell脚本学习指南”中,你可能会学到以下内容: 1. **基础语法**:包括变量定义、赋值、环境变量、...
### 发现服务超过一个小时不打日志进行重启Shell脚本详解 #### 背景介绍 在运维领域,为了确保应用程序或服务的稳定运行,通常会编写一系列的监控脚本来实时监测服务的状态。当发现服务异常时(比如长时间未产生...
在IT行业中,Shell脚本是Linux和Unix操作系统中不可或缺的一部分,尤其对于系统管理员和开发者而言,熟练掌握Shell脚本编写技巧至关重要。标题“编写Shell脚本”表明我们要深入探讨这一主题,而描述则强调了Shell...