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 ...
随机推荐
- MySQL 之迁移用户及权限
参考来源: https://www.cnblogs.com/huangmr0811/p/5570994.html https://blog.csdn.net/u011665746/article/de ...
- lightgbm的sklearn接口和原生接口参数详细说明及调参指点
class lightgbm.LGBMClassifier(boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, ...
- POJ3635 Full Tank?
[题解] 用dijkstra算法求最短路.同时考虑在每个节点加油(一单位)与否. [代码] #include <iostream> #include <map> #includ ...
- MySQL中授权(grant)和撤销授权(revoke
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant s ...
- virt-install vs qemu-kvm创建guest主机
virt-install是rpm包python-virtinst里的一个工具 -- 其实就是一个python写的脚本 .基本可以理解为virsh-install是qemu-kvm工具的人性化实现.可以 ...
- Django中的ORM介绍,字段以及字段的参数。
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- elastalert新增自定义警告推送
举例,博主公司有自己的内部通讯工具(类似QQ),接下来用IM代称该工具.于是希望elastalert的警告推送可以支持IM的公众号群发功能. 等博主这个月知识库写了再来补充hah
- html中header,footer分别固定在顶部和底部
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>page01</title> 5 <styl ...
- dubbo-文档
Srping版Dubbo集成中文地址:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html SpringB ...
- 【Fiddler学习】Fiddler简介和Web抓包应用(转)
一.Fiddler是什么? Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的进出Fiddler的数据. Fiddler 要比其 ...