Linuxシェルはiniファイルの読み取りと書き込みを行います

ini初期化構成ファイル

iniの形式は次のとおりです。

[Section1]
Key1=val1
Key2=val2

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

シェルの読み取りおよび書き込み操作スクリプト

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

おすすめ

転載: blog.csdn.net/pyt1234567890/article/details/112756268