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

ini文件格式一般都是由节、键、值三部分组成

格式:

[第一节 ]
第一个键 = 值
第二个键 = 第二个值
[第二节 ]
第一个键 = val1,val2,val3
例子:

代码如下:

[COM]
KINGGOO = jb51.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]
ip = jb51.net

[MAILLIST]
mail = admin@jb51.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}

执行脚本文件既可

当自己使用时,请验证后使用。

(0)

相关推荐

  • Shell脚本逐行读取文本文件(不改变文本格式)

    网上有很多 shell script 读文本文件的例子,但是都没有讲出故事的全部,只说了一半.举个例子,比如从一个 testfile 文件中读取如下格式的文本行: 复制代码 代码如下: $ vi testfile ls      -a -l /bin |  sort ls      -a -l /bin |  sort | wc ls      -a -l |  grep sh | wc ls      -a -l ls      -a -l |       sort      |    wc

  • PowerShell读取文本文件指定行内容的方法

    本文介绍一个PowerShell中如何一步到位的获取到一个文本文件的第N行.比如一个文本文件,它有1000行,我想把第500行的内容直接取出来的,最简单的方法是通过PowerShell来实现. 在PowerShell中,可以通过Get-Content这个cmdlet来获取文本文件的内容.Get-Content将一个文本文件读取到一个数组中,每一个数组元素就是文件的一行内容.比如一个文本文件内容如下: 复制代码 代码如下: 111 222 333 那么,使用Get-Content获取到一个数组,数

  • Shell脚本读取ini配置文件的实现代码2例

    一.简单版 参考stackoverflow的例子,改了一个出来: 复制代码 代码如下: while IFS='= ' read var val do     if [[ $var == \[*] ]]     then         section=$(echo $var | sed 's/^\[\(.*\)\]$/\1/')     elif [[ $val ]]     then         if [ -z $section ];then             declare "${

  • 利用Shell脚本循环读取文件中每一行的方法详解

    前言 本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.使用for循环 for line in `cat filename` do echo $line done 或者 for line in $(cat filename) do echo $line done 二.使用while循环 while read -r line do echo $line done < filename While循环中rea

  • Shell逐行读取文件的4种方法

    在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法.为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1:while循环中执行效率最高,最常用的方法. 复制代码 代码如下: function while_read_LINE_bottm(){ While read LINE do echo $LINE done  < $FILENAME } 注释:我习惯把这种方式叫做read釜底抽薪,因为这种方

  • Shell脚本一次读取文件中一行的2种写法

    写法一: 复制代码 代码如下: #!/bin/bash while read line do       echo $line     #这里可根据实际用途变化 done < urfile 写法二: 复制代码 代码如下: #!/bin/bash cat urfile | while read line do     echo $line done 注意:以上代码中urfile 为被读取的文件 Shell读取文本文件 方法一:通过命令获取所需内容,传递给变量 复制代码 代码如下: var1=$(g

  • shell按行读取文件的3种方法

    方法有很多,下面写出三种方法:写法一: 复制代码 代码如下: #!/bin/bashwhile read linedoecho $linedone < filename(待读取的文件) 写法二: 复制代码 代码如下: #!/bin/bashcat filename(待读取的文件) | while read linedoecho $linedone 写法三: 复制代码 代码如下: for line in `cat filename(待读取的文件)`doecho $linedone 说明:for逐行

  • Shell脚本中使用for循环和cat命令实现按顺序合并文件

    工作目录下面有mydoc1.txt,mydoc2.txt...mydoc41.txt,本来想用sed排列依次取值排序,然后用cat来合并这些文件,发现达不到预期效果,合并令如下所示: 复制代码 代码如下: ls -lF *.txt | sed  -n '/mydoc1/,/mydoc41/p' | xargs -i cat {}> >mynew.txt 发现用其命令达不到预期效果,后来经检查发现,问题应该出现在sed排序上面,它仍然是按照位数来进行排序,并没有智能的按照范围来排序,sed取值命

  • Shell脚本读取标准ini配置文件Demo

    ini DEMO 复制代码 代码如下: [TESTFTP] host=127.0.0.1 name=my pass=mylove type=ftp [TESTSSH] host=127.0.0.1 name=my pass=mylove type=ssh [END] Shell脚本: 复制代码 代码如下: initConf() { HOSTID=$1 CONF=$2 echo "----cat----" cat $CONF \\     | grep -v ^$ \\     | se

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

    ini文件格式一般都是由节.键.值三部分组成 格式: [第一节 ] 第一个键 = 值 第二个键 = 第二个值 [第二节 ] 第一个键 = val1,val2,val3 例子: 复制代码 代码如下: [COM] KINGGOO = jb51.net 其实这个作用没那么特别大,但多个shell如果每个配置信息都在shell文件里面写,懂的人还好,半懂+不仔细的人要如何改,改几个地方估计脚本就不能运行了.所以这样单独哪出来比较好些,而且可以多个shell使用一个ini文件(与扩展名无关)来做配置也可以

  • ASP.NET CORE读取json格式配置文件

    目录 一.在Startup类中读取json配置文件 1.使用Configuration直接读取 2.使用IOptions接口 1.定义实体类 2.修改json文件 3.在StartUp类里面配置 3.读取自定义json文件 实例化类 添加方式1 添加方式2 二.在类库中读取json文件 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的

  • shell脚本设置日志格式的方法

    shell脚本设置日志格式 1.封装函数 #!/bin/bash function log() { echo "$@" } //测试: log "this is a test..." log "today is `date '+%Y-%m-%d'` " 2.设置时间日志 #!/bin/bash function log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $@" } log "

  • 使用shell读取ini文件方法步骤

    目录 动机 .ini 类文件格式 在 shell 脚本中处理 .ini 文件时要执行的操作 假定处理系统 查看部分列表 仅提取特定部分 如何限定 shell 变量名 Shell scripting 动机 我决定编写一个脚本来进行干净的 macOS (BSD) / Linux 的初始设置. 我认为有一个 tsukkomi 说“现在大多数发行版都预装了 perl / python”,但我决定使用 Shell 脚本(bash),因为它易于编写进程过程. 但是,用shell语法写各种配置文件是不可读的,

  • PHP读取配置文件类实例(可读取ini,yaml,xml等)

    本文实例讲述了PHP读取配置文件类实例.分享给大家供大家参考.具体如下: <?php class Settings { var $_settings = array (); function get($var) { $var = explode ( '.', $var ); $result = $this->_settings; foreach ( $var as $key ) { if (! isset ( $result [$key] )) { return false; } $resul

  • C++读取INI配置文件类实例详解

    本文以实例讲解了C++读取配置文件的方法. 一般情况下,我们都喜欢使用ini扩展名的文件作为配置文件,可以读取及修改变量数值,也可以设置新的组,新的变量,本文的实例代码一个是读取INI的定义文件,另一个是CIniFile类实现文件,两者结合,完美实现VC++对INI文件的读写. 用户接口说明:在成员函数SetVarStr和SetVarInt函数中,当iType等于零,则如果用户制定的参数在ini文件中不存在,则就写入新的变量.当iType不等于零,则如果用户制定的参数在ini文件中不存在,就不写

  • python读取ini配置文件过程示范

    这篇文章主要介绍了python读取ini配置文件过程示范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装 pip install configparser 1 配置文件 config.ini: [MysqlDB] user=root passwd=123456 sport=3306 db_name=my_db charset=utf-8 获取参数: import configparser config = configparser.Conf

  • Python读取ini配置文件传参的简单示例

    前言 为了往我们写好的Python代码传入参数,有很多种方法,比如使用input获取从DOS 输入的参数,又或者读取txt 文件中的字符作为参数.但为了比较规范,在windows 上我们常常用ini的配置文件进行工具配置.因此,今天我们说明下如果使用python 读取ini 文件. 一.后缀 ini 配置文件介绍 我们新建一个txt 文件,将后缀改为.ini形式,在ini文件中按照分组写入需要的参数. ini示例: # 定义arnold分组 [arnold] # 分组名称 platformNam

随机推荐