shell修改配置文件

来源:互联网 发布:mac 网游 编辑:程序博客网 时间:2024/05/02 00:42

#!/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     $*

 

 

0 0
原创粉丝点击