4591566 发表于 2018-8-27 07:23:33

Shell实现读取ini格式配置文件方法

  原文 http://www.iyunv.net/article/60854.htm
  ini文件格式一般都是由节、键、值三部分组成
  格式:
  [第一节 ]
  第一个键 = 值
  第二个键 = 第二个值
  [第二节 ]
  第一个键 = val1,val2,val3
  例子:
  复制代码代码如下:
  
  KINGGOO = iyunv.net
  其实这个作用没那么特别大,但多个shell如果每个配置信息都在shell文件里面写,懂的人还好,半懂+不仔细的人要如何改,改几个地方估计脚本就不能运行了。所以这样单独哪出来比较好些,而且可以多个shell使用一个ini文件(与扩展名无关)来做配置也可以的。只需要在shell里面加一个自定义函数就可以了。
  复制代码代码如下:
  # __readINI [配置文件路径+名称] [节点名] [键值]
  function __readINI() {
  INIFILE=$1; SECTION=$2; ITEM=$3
  _readIni=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
  echo ${_readIni}
  }
  使用方法:
  复制代码代码如下:
  __readINI file.ini SECTION KEY
  例子:有一个ini格式文件kinggoo.ini,内容如下
  复制代码代码如下:
  
  ip = iyunv.net
  
  mail = admin@iyunv.net
  脚本文件内容:
  复制代码代码如下:
  #!/bin/bash
  # __readINI [配置文件路径+名称] [节点名] [键值]
  function __readINI() {
  INIFILE=$1; SECTION=$2; ITEM=$3
  _readIni=`awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE`
  echo ${_readIni}
  }
  # 使用方法:
  # Net address
  _IP=( $( __readINI kinggoo.ini IP ip ) )
  echo ${_IP}
  # mail send
  _mailList=( $( __readINI kinggoo.ini MAILLIST mail ) )
  echo ${_mailList}
  执行脚本文件既可
  当自己使用时,请验证后使用。

页: [1]
查看完整版本: Shell实现读取ini格式配置文件方法