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

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

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

# -------------------------------------------------------------------------------
# Function name: writelog()
# Description : Write script run log into log file
# -------------------------------------------------------------------------------
function writelog()
{
if [ $# -ne ];then
echo "Usage: writelog message_level message_info logfile"
fi local log_file=$
local debug_level=$
local messages=$ 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 ];then
prompt_msg "ERROR" "Usage:replaceLine searchStr replaceStr filename"
fi local searchStr=$
local replaceStr=$
local filename=$ 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 ];then
prompt_msg "ERROR" "Usage:replaceLine2 startStr endStr searchStr replaceStr filename."
fi local startStr=$
local endStr=$
local searchStr=$
local replaceStr=$
local filename=$ 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
fi
fi prompt_msg "ERROR" "Replace parameter of ${searchStr} at ${filename} file failed."
return
}

Shell编程常用函数的更多相关文章

  1. Shell编程—创建函数

    1基本的脚本函数 函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用.要在脚本中使用该代码块时,只要使用所起的函数名就行了. 1.1创建函数 有两种格式可以用来在bash shell脚本中创建 ...

  2. shell编程之函数

    一.函数定义和调用 函数是Shell脚本中自定义的一系列执行命令,一般来说函数应该设置有返回值(正确返回0,错误返回非0).对于错误返回,可以定义其他非0正值来细化错误.使用函数最大的好处是可避免出现 ...

  3. shell编程 之 函数

    1 函数基本格式 个人认为,编程中的函数基本上有3种,第一种是糖葫芦函数,一根棒棒串起来,执行一次就是走个过场,吃完了糖葫芦就没别的事了,第一种基本就是这样的: 它没有参数,没有返回值. demoFu ...

  4. windows 编程—— 常用函数 与 操作

    目录: MessageBox() 和 PlaySound() 获得窗口 或屏幕大小 获得字体大小 输出文字 屏蔽和显示控制台窗口 1. MessageBox() 和 PlaySound() Messa ...

  5. Linux - 简明Shell编程08 - 函数(Function)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash function Check( ...

  6. shell 编程之函数

    shell 函数的定义和普通的c语言函数定义差不多 function(){ } shell 函数的返回值,可以显示的return 语句,如果没有return  那么就会把最后一条语句的执行结果作为返回 ...

  7. Shell 编程(函数)

    声明函数 demoFun(){ echo "这是我的第一个 shell 函数!" } 函数名(){ ...函数体 } 在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 ...

  8. shell编程常用的截取字符串操作

    1.          常用的字符串操作 1.1.           替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...

  9. c#基础语言编程-常用函数

    类型转换Convert Convert考虑数据意义的转换. Convert是一个加工.改造的过程.在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找. T ...

随机推荐

  1. Webpack打包方式及各场景下模块化语法总结

    1.nodejs的方式:commonjs  var xx =require()   modules.exports=xxxx 注意:这种方式引入模块,路径会遵循node的规则,和js的src路径规则不 ...

  2. 关于Element UI中页面样式小问题

    一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...

  3. c#第一周的游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  4. 高通9X07模块QMI架构使用入门

    QMI(Qualcomm Message Interface) 高通用来替代OneRPC/DM的协议,用来与modem通信.本文是摸索高通QMI机制一点经验,重点解读了如果建立拨号连接,仅供参考.qm ...

  5. [SQL]卸载数据库清理注册表方法regedit

    .打开注册表. 开始——运行——regedit——确定 .然后找到下面的文件夹,删除掉: HKEY_CURRENT_USER\ Software\ Microsoft\ Microsoft SQL S ...

  6. 使用gulp压缩js详细步骤笔记

    先要安装nodejs,初始化项目配置文件package.json,根据情况输入配置参数 npm init test command: git repository: keywords: author: ...

  7. system 系统调用、gcc编译过程

    system 库函数的功能是执行操作系统的命令或者运行指定的程序 #include <stdio.h> #include <stdlib.h>//引入库 int main() ...

  8. Hadoop2.6.5集群搭建

    一. Hadoop的分布式模型 Hadoop通常有三种运行模式:本地(独立)模式.伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式.安装完成后 ...

  9. 7 家 IT 厂商 6394.5 万元中标天津公安云项目(虚拟化、数据库、软件开发)

    http://mp.weixin.qq.com/s/kjum54HJorGTPtZiM-HE1g 天津市公安局云计算平台项目分为:大数据部分.虚拟化部分.数据库部分,软件开发部分,预算分别为:2350 ...

  10. Java基本知识进阶

    1.static 2.代码块 3.继承 4.抽象类 5.接口 6.多态 7.包 8.权限修饰符 9.内部类 10.字节码 11.包装类 12.装箱&拆箱 13.正则表达式 14.异常 15.反 ...