shell学习与应用,边学边用之三!(输出调试日志)
shell学习与使用,边学边用之三!(输出调试日志)
关于shell脚本的调试在我的博客“shell学习与使用,边学边用之二”中
后面关于"set -x"命令选项的使用就已经够了。
下面一些当作补充。
一:最原始最常用的调试技术:
使用echo和print命令。
二:根据调试层次控制输出。使用echo指令的不足之处在于,当程序员不想显示这些输出的时候。就不得不注释掉或者删除这些指令。如果下次要再调试又要再次添加。麻烦又容易出错。
借鉴C语言中常用的控制调试输出技巧,即使用
如果不需要输出调试信息时将#define DEBUG 1注释掉即可。
要输出调试信息时再将注释删除即可。
在shell脚本中也可以使用一些如debug标志然后输出的方式来做。然后调用一些专门输出调试信息的函数测试如下:
根据上面还可以写出其它级别的调试日志输出函数。
根据java中的log4j来说还可以有log_info(),log_warn(),log_error(),log_fatal()等
日志输出函数。
=================未完待续……==============
关于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()等
日志输出函数。
=================未完待续……==============