最近需要使用shell脚本解析配置文件,于是下来去找来找,发现以下两种方式都是比较好用的,但是各有各的不足。
1.使用source 解析
特点:方便,简单
不足:当文件中有多个同名的配置项,就不好解析了
脚本:test.sh
#!/bin/sh
source myconfig
#注意,这里也可以写成点 filename,即: . filename
echo $ip
echo $port
配置文件:文件名: myconfig, 内容就包含以下两行就行:
ip=192.168.1.100
port=100
对于这样类似的配置文件,毫无疑问,这样的脚本对应这样的配置方式,是最简单的!!!!
但是,有个不足,假如我这里有多个这样的配置 ,
#【server 1】
ip=192.168.1.100
port=7878
#[server 2]
ip=192.168.1.100
port=7777
#[server 3]
ip=192.168.1.100
port=8888
这种情况,source就不好解析了,或许我还没找到方法,大家知道的,也指教一下,谢谢咯
方式2:
先看配置文件,配置文件各个字段用分号分隔,一行为一个配置项,文件名:myconfig
192.168.1.100;8989;root
192.168.1.300;8888;user
192.168.1.200;8980;administrator
脚本内容: server.sh
#!/bin/sh
while read line;do
ip=$(echo $line | awk -F ';' '{print $1}')
port=$(echo $line | awk -F ';' '{print $2}')
role=$(echo $line | awk -F ';' '{print $3}')
echo $name1
echo $pwd
echo $role
#这里就可以放你要拿配置文件中的各个配置值做什么的代码
done <myconfig
实际上,这种方式也很简单,只是配置文件的可读性就差来很多,所以根据实际的情况,选择一个,应该就OK
最后,Thanks!