linux之shel读写ini文件

ini 初始化配置文件

ini格式如下:

[Section1]
Key1=val1
Key2=val2

[Section2]
Key1=val1
Key2=val2
... ...

shell读写操作脚本

#!/bin/bash

echo "ini file read/write."

# 读取键值
ini_read_key() {
    file=$1;
    section=$2;
    key=$3;

    val=$(awk -F ' = ' '/\['${section}'\]/{a=1} (a==1 && "'${key}'"==$1){a=0;print $2}' ${file}) 
    echo ${val}
}

# 写入键值
ini_write_key() {
    file=$1;
    section=$2;
    key=$3;
    val=$4
    awk -F ' = ' '/\['${section}'\]/{a=1} (a==1 && "'${key}'"==$1){gsub($2,"'${val}'");a=0} {print $0}' ${file} 1<>${file}
}

# 读取所有section
ini_read_section() {
    file=$1;
    val=$(awk '/\[/{printf("%s ",$1)}' ${file} | sed 's/\[//g' | sed 's/\]//g')
    echo ${val}
}

# 读取所有section
ini_read_section odbc.ini

# 读取SERVER字段
ini_read_key odbc.ini mysql SERVER 

# 修改SERVER的值
ini_write_key odbc.ini mysql SERVER 192.168.12.125

# 读取SERVER字段
ini_read_key odbc.ini mysql SERVER

以odbc.ini为例,测试
odbc.ini:

[mariadb]
Description = The Database for mariadb
Trace = On
TraceFile = stderr
Driver = mariadb
SERVER = 192.168.12.1
USER = root
PASSWORD = 1234
PORT = 3306
DATABASE = test
charset = UTF8

[mysql]
Description = The Database for mysql
Trace = On
TraceFile = stderr
Driver = mysql
SERVER = 192.168.12.124
USER = root
PASSWORD = 1234
PORT = 3306
DATABASE = test
charset = UTF8

测试结果

eric@eric-PC:~/Documents/linux/shell$ ./shell2.sh 
ini file read/write.
mariadb mysql
192.168.12.124
192.168.12.125
eric@eric-PC:~/Documents/linux/shell$ cat odbc.ini
[mariadb]
Description = The Database for mariadb
Trace = On
TraceFile = stderr
Driver = mariadb
SERVER = 192.168.12.1
USER = root
PASSWORD = 1234
PORT = 3306
DATABASE = test
charset = UTF8

[mysql]
Description = The Database for mysql
Trace = On
TraceFile = stderr
Driver = mysql
SERVER = 192.168.12.125
USER = root
PASSWORD = 1234
PORT = 3306
DATABASE = test
charset = UTF8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值