`
scm002
  • 浏览: 309686 次
社区版块
存档分类
最新评论

shell脚本调试 -- 运行日志2

 
阅读更多

http://blog.csdn.net/gsnumen/article/details/7265641

 

shell脚本调试 -- 运行日志1

 
本文主要描述如何输出shell脚本中的debug日志.
 

C/C++的debug日志

    在C/C++中有 __FILE__, __func__, __LINE__ 来表示 当前这行日志来自哪个源代码文件的第几行的哪个函数.
如:
#include<stdio.h> 
/* t.c */

int main()
{
    printf("%s:%d:%s:DEBUG Hello World!\n", __FILE__, __LINE__, __func__);
    return 0;
}
/* 运行结果如下:
    $> make t
    cc t.c -o t
    $> ./t
    t.c:6:main:DEBUG Hello World!
    $> 

 */
t.c:6:main:DEBUG Hello World! 是在说, 这行信息来至 t.c 文件的第 6 行的 main 函数,这种方法可以让你在调试过程中很快的定位问题的位置.

 

shell脚本中的debug日志

 
    使用 alias 功能, 实现类似C/C++中的debug日志方法. 将文件保存到 /etc/mydebug
#!/bin/bash 
# mydebug
# Aliases are not expanded when the shell is not interactive, unless the
#+ expand_aliases shell option is set using shopt
shopt -s expand_aliases

case "$1" in
    "debug")
        alias mydebug='echo -n $(caller 0|tr " " ":"):$FUNCNAME:$LINENO:LOG:" "';
        ;;
    *)
        alias mydebug='';
        ;;
esac
 
测试:
#!/bin/bash 
# mydebug_test.sh

source /etc/mydebug debug; #如果带参数就是 debug 模式, 不带任何参数为非debug模式.

function check_apache()
{
    echo "$(mydebug)apache [OK]"
}

function check_mysql()
{
    echo "$(mydebug)mysql [OK]"
}

function check_all()
{
    check_apache;
    check_mysql;
}

check_all;
 
debug模式的运行结果:
$> /bin/bash mydebug_test.sh
18:check_all:mydebug_test.sh:check_apache:8:LOG: apache [OK]
19:check_all:mydebug_test.sh:check_mysql:13:LOG: mysql [OK]
$>
 
非debug模式的运行结果:
$> /bin/bash mydebug_test.sh 
apache [OK]
mysql [OK]
 
 

------------- end -------------
From: GS
-------------------------------

分享到:
评论

相关推荐

    Advanced Bash-Scripting Guide <>

    L-2. DOS commands and their UNIX equivalents N-1. Revision History 例子清单: 2-1. 清除:清除/var/log 下的log 文件 2-2. 清除:一个改良的清除脚本 2-3. cleanup:一个增强的和广义的删除logfile 的脚本 3-1. ...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    Linux高级bash编程

    L-2. DOS commands and their UNIX equivalents N-1. Revision History 例子清单: 2-1. 清除:清除/var/log下的log文件 2-2. 清除:一个改良的清除脚本 2-3. cleanup:一个增强的和广义的删除logfile的脚本 3-1. 代码...

    shell 编程指南pdf

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    LINUX与UNIX SHELL编程指南(很全)

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    绝版经典《Linux与UNIX Shell编程指南》

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    LINUX与UNIX SHELL编程指南 高清PDF

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    linux与unix shell编程指南

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    linux shell 编程教程

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    linux与unix shell编程指南part2

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    amazon-ecs-logs-collector:该脚本将用于收集常规os日志以及Docker和ecs-agent日志,它还支持在Amazon Linux中为docker和ecs-agent启用调试模式

    为Docker和Amazon ECS代理启用调试模式(仅适用于Systemd初始化系统和Amazon Linux) 在与脚本相同的文件夹中创建tar zip文件 用法 以root用户身份运行此项目: # curl -O ...

    Linux shell编程指南

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    shell编程和unix命令

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    LINUX与UNIX_Shell编程指南(下)

    第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 ...

    LINUX与UNIX SHELL编程指南

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

    LINUX与UNIX Shell编程指南

    16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 155 17.3 字符串测试 155 17.4 测试数值 156 17.5 ...

Global site tag (gtag.js) - Google Analytics