读取配置文件的shell脚本实现

(本人正在参加2015博客之星评选,诚邀你来投票,谢谢:http://vote.blog.csdn.net/blogstar2015/candidate?username=zhouzxi)

最近,在从事开发工作的过程中,遇到了一个需求:用shell脚本实现对配置文件的读取,并将读取到的配置项写入到新的文件中。

为了完成该需求,我们考虑使用awk命令,该命令把文件中的内容逐行的读入,按照特定的规则对每行记录进行处理。

例如,我们要从文件Config.ini(位于当前用户的etc目录下)中获取各个配置项的值,并将之写入到NetworkInfo.txt文件中。其中,Config.ini文件的内容如下:

[network]
; ip of database
ip=10.10.10.10
; port of database
port=9999

我们编写如下的shell脚本GetDatabaseConfig.sh:

#!/bin/ksh

CFG_FILE=$HOME/etc/Config.ini

IP=` awk '$1~/\[.*/{_cdr_par_=0}\
         $0 ~ /^ *\[ *network *\]/ {_cdr_par_=1}\
         $0~/^[\011 ]*ip *=.*/ { if(_cdr_par_==1) { sub("="," "); print $2; exit 0} }\
         ' ${CFG_FILE}`

PORT=` awk '$1~/\[.*/{_cdr_par_=0}\
          $0 ~ /^ *\[ *network *\]/ {_cdr_par_=1}\
         $0~/^[\011 ]*port *=.*/ { if(_cdr_par_==1) { sub("="," "); print $2; exit 0} }\
         ' ${CFG_FILE}`


main()
{
    echo "ip =" $IP
    echo "port =" $PORT

    echo "[network]" >> NetworkInfo.txt
    echo "ip=$IP" >> NetworkInfo.txt
    echo "port=$PORT" >> NetworkInfo.txt

    echo "finish !!!!!!!!!!!"
}

## Execute main function
main $*

将该脚本上传到Linux机器上,并使用“chmod 777 GetDatabaseConfig.sh”修改该脚本的权限,然后运行“./GetDatabaseConfig.sh”命令,结果如下:

ip = 10.10.10.10
port = 9999
finish !!!!!!!!!!!

同时,可以看到在当前目录下生成了NetworkInfo.txt文件,其内容为:

[network]
ip=10.10.10.10
port=9999

本文中的shell脚本已提交到GitHub上,欢迎下载阅读:https://github.com/zhouzxi/GetDatabaseConfig

参考资料:
1.http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
2.http://www.cnblogs.com/repository/archive/2011/05/13/2045927.html

当你在shell运行命令时,你经常需要从配置文件读取参数和选项。以下是一些常用的shell脚本读取配置文件的方法: 1. 使用source命令读取配置文件: 使用source命令可以将配置文件的变量和函数导入到当前shell。例如,如果你的配置文件名为config.sh,可以使用以下命令读取: ``` source config.sh ``` 这样就可以在当前shell使用config.sh定义的变量和函数。 2. 使用点号(.)命令读取配置文件: 点号(.)命令与source命令的作用相同,都可以将配置文件的变量和函数导入到当前shell。例如,如果你的配置文件名为config.sh,可以使用以下命令读取: ``` . config.sh ``` 这样就可以在当前shell使用config.sh定义的变量和函数。 3. 使用cat和while命令读取配置文件: 你可以使用cat命令读取配置文件的内容,并使用while命令逐行处理配置文件的每个条目。例如,如果你的配置文件名为config.txt,其每行都包含一个变量名和一个值,你可以使用以下命令读取: ``` cat config.txt | while read line; do eval "$line" done ``` 这将逐行读取config.txt文件,并使用eval命令将每个行的内容转换为shell命令并执行。 4. 使用awk命令读取配置文件: 你可以使用awk命令读取配置文件的每个变量和值,并将它们转换为shell变量。例如,如果你的配置文件名为config.txt,其每行都包含一个变量名和一个值,你可以使用以下命令读取: ``` awk -F= '{print "export " $1"="$2}' config.txt | while read line; do eval "$line" done ``` 这将读取config.txt文件,并使用awk命令将每个变量和值转换为export命令,然后使用eval命令将export命令执行,将变量导入到当前shell。 以上是一些常用的读取配置文件的方法,你可以根据自己的需要选择合适的方法。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值