• Shell编程常用函数


     1、打印提示消息函数,不同级别消息使用不同的颜色显示。其中错误信息提示为红色字体。

    # -------------------------------------------------------------------------------
    # Function name: prompt_msg()
    # Description  : Pring prompt message to screen
    # Usage        : prompt_msg "INFO" "Hello World"
    # -------------------------------------------------------------------------------
    
    function prompt_msg()
    {
       [ $# -ne 2 ] && printf "33[31mUsage: prompt_msg message_level message_info
    33[0m"
       
       local msg_level=$1
       local msg_info=$2
       
       [ ${msg_level} == "INFO" ] && printf "${msg_level}: ${msg_info}
    "
       [ ${msg_level} == "WARN" ] && printf "33[33m${msg_level}: ${msg_info}
    33[0m"
       [ ${msg_level} == "ERROR" ] && printf "33[31m${msg_level}: ${msg_info}
    33[0m"
    }

    2、写日志函数,将消息写入指定日志文件并在屏幕上显示。

    # -------------------------------------------------------------------------------
    # Function name: writelog()
    # Description : Write script run log into log file
    # -------------------------------------------------------------------------------
    function writelog()
    {
      if [ $# -ne 3 ];then
        echo  "Usage: writelog message_level message_info logfile"
      fi
    
      local log_file=$1
      local debug_level=$2
      local messages=$3
    
      echo "[$(date '+%Y-%m-%d %H:%M:%S')] [${debug_level}] ${messages}"
      echo "[$(date '+%Y-%m-%d %H:%M:%S')] [${debug_level}] ${messages}" >> ${log_file}
    }

    3、替换函数,替换文件中指定的参数,匹配到指定的参数即整行替换,适用于文件中只有唯一参数的情况,可以通过匹配参数调整。

    使用参数说明

    searchStr:需要替换行的字符串。在开始行和结束行之间。这样可以精确匹配到该行。

    replaceStr:替换匹配字符串所在的行。全行替换。脚本中替换代码为:sed -i "${strline}c ${replaceStr}" ${filename}

    filename:待操作的文件。

    
    

    # -------------------------------------------------------------------------------
    ## Funciton name : replaceLine
    ## Usage         : replaceLine searchStr replaceStr filename
    ## Description   : To replace the specify line
    # -------------------------------------------------------------------------------

    function replaceLine()
    {
      if [ $# -ne 3 ];then
        prompt_msg "ERROR" "Usage:replaceLine searchStr replaceStr filename"
      fi
      
      local searchStr=$1
      local replaceStr=$2
      local filename=$3
      
      if [ ! -f ${filename} ];then
        prompt_msg "ERROR" "The file of ${filename} is not exist,please check."
      fi
      
      searchStr=$(echo ${searchStr} | sed -e 's/[/\[/g' -e 's/]/\]/g' -e 's/./\./g') 
      
      local strline=$(sed -n "/${searchStr}/=" ${filename})
      if [ "X${strline}" != "X"];then
        sed -i "${strline}c ${replaceStr}" ${filename}
    return 0
    else prompt_msg "ERROR" "Replace parameter of ${searchStr} at ${filename} file failed."
    return 1
    fi }

    4、替换函数,替换文件中指定的参数,匹配到指定的参数即整行替换,适用于文件中有多个参数匹配的情况,通过增加行范围来实现。开始行和结束行通过指定模式匹配来获取。对比上一个函数的优点,就是可以指定区间修改,修改更精确。

    使用参数说明:

    startStr:输入开始匹配的参数,选择可唯一指定一行的字符串。目的是确定开始行。

    endStr:输入结束匹配的参数。选择可唯一指定一行的字符串,目的是确定结束行。

    searchStr:需要替换行的字符串。在开始行和结束行之间。这样可以精确匹配到该行。

    replaceStr:替换匹配字符串所在的行。全行替换。脚本中替换代码为:sed -i "${strline}c ${replaceStr}" ${filename}

    filename:待操作的文件。

    
    

    # -------------------------------------------------------------------------------
    ##funciton: replaceLine2
    ##Usage: replaceLine2 startStr endStr searchStr replaceStr filename
    ##Description: To replace the specify line
    # ------------------------------------------------------------------------------

    function replaceLine2()
    {
      if [ $# -ne 5 ];then
        prompt_msg "ERROR" "Usage:replaceLine2 startStr endStr searchStr replaceStr filename."
      fi
      
      local startStr=$1
      local endStr=$2
      local searchStr=$3
      local replaceStr=$4
      local filename=$5
      
      if [ ! -f ${filename} ];then
        prompt_msg "ERROR" "The file of ${filename} is not exist,please check."
      fi
      
      ##transfer input startstr,endstr and searchstr
      startStr=$(echo ${startStr} | sed -e 's/[/\[/g' -e 's/]/\]/g' -e 's/./\./g')
      endStr=$(echo ${endStr} | sed -e 's/[/\[/g' -e 's/]/\]/g' -e 's/./\./g')
      searchStr=$(echo ${searchStr} | sed -e 's/[/\[/g' -e 's/]/\]/g' -e 's/./\./g')
      
      local startline=$(sed -n "/${startStr}/=" ${filename})
      local endline=$(sed -n "/${endStr}/=" ${filename})
      if [ "X${startline}" != "X" -a "X${endline}" != "X" ];then
        local strline=$(sed -n "/${startline}/,/${endline}/{/${searchStr}/=}" ${filename})
        if [ "X${strline}" != "X" ];then
          sed -i "${strline}c ${replaceStr}" ${filename}
          prompt_msg "INFO" "Replace parameter of ${searchStr} at ${filename} file success."
          return 0
        fi
      fi
      
      prompt_msg "ERROR" "Replace parameter of ${searchStr} at ${filename} file failed."
      return 1
    }

     

  • 相关阅读:
    (总结)Oracle 11g常用管理命令(用户、表空间、权限)
    在 .NET 中使用 FixedTimeEquals 应对计时攻击
    开源的.Net 工作流引擎Elsa初试——创建工作流服务器和图形化工作流配置管理应用
    C# 数字证书 RSA加密解密 加签验签
    C#获取Unix时间戳
    react 带行号的文本框的使用方案
    ThinkPad电池处会发出“吱吱”电流声怎么办
    使用C#和MonoGame开发俄罗斯方块游戏
    C# 通过word模板动态生成Word
    云原生那些顶级开源项目,你都用过哪些?
  • 原文地址:https://www.cnblogs.com/linyfeng/p/6446517.html
Copyright © 2020-2023  润新知