Linux Shell读取.ini形式的配置文件

在使用Linux Shell编程或者是使用其他语言进行编程的时候,我们经常会遇到要读取配置文件的情况,配置文件是一个软件的必要组成部分,例如config.ini的内容如下:

1
2
3
[temperature]
warning=85
shutdown=93

那么如何读取这个配置文件的信息呢,其实很简单,采用正则表达式就可以很好的解决这个问题了。读取配置文件的属性的值的脚本read.sh的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh

#定义一个函数
GetKey(){
#获取参数中的段
section=$(echo $1 | cut -d '.' -f 1);
#获取参数中的key
key=$(echo $1 | cut -d '.' -f 2);
#使用正则表达是获取key所对应的value
sed -n "/\[$section\]/,/\[.*\]/{
/^\[.*\]/d
/^[ \t]*$/d
/^$/d
/^#.*$/d
s/^[ \t]*$key[ \t]*=[ \t]*\(.*\)[ \t]*/\1/p
}" config.ini
}

#读取实例
warning=$(GetKey "temperature.warning")
shutdown=$(GetKey "temperature.shutdown")
#下面以两种方式来输出获取的配置文件中section.key对应的值
echo "========================"
echo "warning=${warning}"
echo "shutdown=${shutdown}"
printf "%s\n" $warning
printf "%s\n" $shutdown
echo "========================"

输出结果如下所示:

1
2
3
4
5
6
========================
warning=85
shutdown=93
85
93
========================

需要具体说明的是,如果不懂上面的正则表达式,你可以去学习一下,无论是Shell脚本、C语言、C++、Java、PHP还是其他的语言,基本上都支持正则表达式,也就是说,只要是支持读取文件并且支持正则表达式的语言,你都可以用类似上面的方法来获取配置文件的内容。

也就是说,读取配置文件的方法不限于shell脚本啦。
举一反三。在我们平时的编程当中我们会遇到很多这种情况,一个功能其实很多语言都可以来实现,重要的是思想,想法,具体到程序语言当中,就是算法了,因此在平时的编程当中,我们要多提炼一些经典的算法,多学习,多理解,同时加以改进,这样才是程序员的提升之道。

ps:正则表达式真的很重要,对于文本的高效处理具有不可替代的地位,大家都好好补补吧。
ps:还有其他的配置文件读取方式,例如使用Linux中文本处理神器awk来进行处理也是可以的。方法很多,本文仅仅是介绍了其中一种,具体使用哪种方法得看你自己的实际情况了。

ZHANGCHI wechat
关注微信号进一步交流