Shell编程常用函数
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编程常用函数的更多相关文章
- Shell编程—创建函数
1基本的脚本函数 函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用.要在脚本中使用该代码块时,只要使用所起的函数名就行了. 1.1创建函数 有两种格式可以用来在bash shell脚本中创建 ...
- shell编程之函数
一.函数定义和调用 函数是Shell脚本中自定义的一系列执行命令,一般来说函数应该设置有返回值(正确返回0,错误返回非0).对于错误返回,可以定义其他非0正值来细化错误.使用函数最大的好处是可避免出现 ...
- shell编程 之 函数
1 函数基本格式 个人认为,编程中的函数基本上有3种,第一种是糖葫芦函数,一根棒棒串起来,执行一次就是走个过场,吃完了糖葫芦就没别的事了,第一种基本就是这样的: 它没有参数,没有返回值. demoFu ...
- windows 编程—— 常用函数 与 操作
目录: MessageBox() 和 PlaySound() 获得窗口 或屏幕大小 获得字体大小 输出文字 屏蔽和显示控制台窗口 1. MessageBox() 和 PlaySound() Messa ...
- Linux - 简明Shell编程08 - 函数(Function)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash function Check( ...
- shell 编程之函数
shell 函数的定义和普通的c语言函数定义差不多 function(){ } shell 函数的返回值,可以显示的return 语句,如果没有return 那么就会把最后一条语句的执行结果作为返回 ...
- Shell 编程(函数)
声明函数 demoFun(){ echo "这是我的第一个 shell 函数!" } 函数名(){ ...函数体 } 在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 ...
- shell编程常用的截取字符串操作
1. 常用的字符串操作 1.1. 替换字符串:$ echo ${var/ /_}#支持正怎表达式 / /表示搜索到第一个替换,// /表示搜索到的结果全部替换. ...
- c#基础语言编程-常用函数
类型转换Convert Convert考虑数据意义的转换. Convert是一个加工.改造的过程.在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找. T ...
随机推荐
- Webpack打包方式及各场景下模块化语法总结
1.nodejs的方式:commonjs var xx =require() modules.exports=xxxx 注意:这种方式引入模块,路径会遵循node的规则,和js的src路径规则不 ...
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- c#第一周的游戏
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- 高通9X07模块QMI架构使用入门
QMI(Qualcomm Message Interface) 高通用来替代OneRPC/DM的协议,用来与modem通信.本文是摸索高通QMI机制一点经验,重点解读了如果建立拨号连接,仅供参考.qm ...
- [SQL]卸载数据库清理注册表方法regedit
.打开注册表. 开始——运行——regedit——确定 .然后找到下面的文件夹,删除掉: HKEY_CURRENT_USER\ Software\ Microsoft\ Microsoft SQL S ...
- 使用gulp压缩js详细步骤笔记
先要安装nodejs,初始化项目配置文件package.json,根据情况输入配置参数 npm init test command: git repository: keywords: author: ...
- system 系统调用、gcc编译过程
system 库函数的功能是执行操作系统的命令或者运行指定的程序 #include <stdio.h> #include <stdlib.h>//引入库 int main() ...
- Hadoop2.6.5集群搭建
一. Hadoop的分布式模型 Hadoop通常有三种运行模式:本地(独立)模式.伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式.安装完成后 ...
- 7 家 IT 厂商 6394.5 万元中标天津公安云项目(虚拟化、数据库、软件开发)
http://mp.weixin.qq.com/s/kjum54HJorGTPtZiM-HE1g 天津市公安局云计算平台项目分为:大数据部分.虚拟化部分.数据库部分,软件开发部分,预算分别为:2350 ...
- Java基本知识进阶
1.static 2.代码块 3.继承 4.抽象类 5.接口 6.多态 7.包 8.权限修饰符 9.内部类 10.字节码 11.包装类 12.装箱&拆箱 13.正则表达式 14.异常 15.反 ...