shell技巧-为调试信息设置输出级别

我们经常在调试脚本时添加一些必要的调试信息,以便跟踪到程序中的错误。在完成调试后,一般都会选择删除这些额外的调试信息,在过了一段时间之后,如果脚本需要添加新的功能,那么我们将不得不重新进行调试,这样又有可能需要添加这些调试信息,在调试成功之后,这些信息可能会被再次删除。如果我们能够为我们的调试信息添加调试级别,使其只在必要的时候输出,我想这将会是一件非常惬意的事情。

   [root@xieqichao ~]# cat > test2.sh
   #!/bin/sh
   if [[ $# == 0 ]]; then
       echo "Usage: ./test2.sh -d debug_level"
       exit 1
   fi
   #1. 读取脚本的命令行选项参数,并将选项赋值给变量argument。
   while getopts d: argument
   do
       #2. 只有到选项为d(-d)时有效,同时将-d后面的参数($OPTARG)赋值给变量debug,表示当前脚本的调试级别。
       case $argument in
       d) debug_level=$OPTARG ;;
       \?) echo "Usage: ./test2.sh -d debug_level"
           exit 1
           ;;
       esac
   done
   #3. 如果debug此时的值为空或者不是0-9之间的数字,给debug变量赋缺省值0.
   if [[ -z $debug_level ||  $debug_level != [0-9] ]]; then
       debug_level=0
   fi
   echo "The current debug_level level is $debug_level."
   echo -n "Tell me your name."
   read name
   name=`echo $name | tr [a-z] [A-Z]`
   if [ $name = "STEPHEN" ];then
       #4. 根据当前脚本的调试级别判断是否输出其后的调试信息,此时当debug_level > 0时输出该调试信息。
       test $debug_level -gt 0 && echo "This is stephen."
       #do something you want here.
   elif [ $name = "ANN" ]; then
       #5. 当debug_level > 1时输出该调试信息。
       test $debug_level -gt 1 && echo "This is ann."
       #do something you want here.
   else
       #6. 当debug_level > 2时输出该调试信息。
       test $debug_level -gt 2 && echo "This is others."
       #do any other else.
   fi
   CTRL+D
   [root@xieqichao ~]# ./test2.sh
   Usage: ./test2.sh -d debug_level
   [root@xieqichao ~]# ./test2.sh -d 1
   The current debug level is 1.
   Tell me your name. ann
   [root@xieqichao ~]# ./test2.sh -d 2
   The current debug level is 2.
   Tell me your name. ann
   This is ann.
发布了329 篇原创文章 · 获赞 52 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xie_qi_chao/article/details/105036569
今日推荐