shell修改配置文件
#!/bin/sh
#================================================
#直接修改key对应的值
function ModCfgvalue ()
{
GetKeyLine $*
num=$? #返回值是0或者行号
if [ 0 -eq $num ]
then
#获取最后一行行号
num=$(awk 'END{print NR}' $1)
#num=`expr $num + 1`
echo $num
sed -i "${num}a $2 $3" $1
else
sed -i "${num}c $2 $3" $1
fi
}
#==================================================
#==================================================
#将原来的一行数据改成注释
function ModCfgnote ()
{
GetKeyLine $*
num=$?
if [ 0 -eq $num ]
then
echo "$2 is not existed in the file $1"
else
sed -i "s/$2 /#$2 /" $1
fi
}
#==================================================
#=================================================
#检查参数个数
function CheckParaNum()
{
#检查参数的个数是否2或者3或者其他
if [ $# -eq 3 ]
then
ModCfgvalue $*
elif [ $# -eq 2 ]
then
ModCfgnote $*
else
echo '参数个数有误,Usage: ./ModCfg a.conf test 123 '
exit
fi
}
#=================================================
#========================================================
#功能:检测文件存在与否
#传入 文件路径 $1
#传出 文件存在与否
function CheckFileExisted()
{
if [ ! -e $1 ] #如果文件不存在
then
echo "$1 文件不存在,请重新确认路径"
exit
fi
}
#=======================================================
#=======================================================
#功能:获取配置文件中的key的位置
#传入 key $2
#传出 行号
#算法:如果存在key,则返回对应的行号;如果不存在,则返回最后一行的行号(将key放在最后一行的下一行)
function GetKeyLine()
{
num=`awk "/^$2 /{print NR}" $1`
echo $num is the lineno
return $num
}
#=======================================================
#main goes here!
#step1 检查文件存在
CheckFileExisted $*
#step2 检查参数个数,确定函数使用
CheckParaNum $*