shell脚本调试 -- 运行日志1
本文主要描述如何输出shell脚本中的debug日志.
C/C++的debug日志
在C/C++中有 __FILE__, __func__, __LINE__ 来表示 当前这行日志来自哪个源代码文件的第几行的哪个函数.
如:
#include<stdio.h>
|
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
|
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]
From: GS
-------------------------------