shell学习与使用,边学边用之三!(输出调试日志)

关于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()等
日志输出函数。

=================未完待续……==============

你可能感兴趣的:(shell,log,shell调试,shell函数)