读取配置文件的shell脚本实现
2015-12-12 11:13
686 查看
(本人正在参加2015博客之星评选,诚邀你来投票,谢谢:http://vote.blog.csdn.net/blogstar2015/candidate?username=zhouzxi)
最近,在从事开发工作的过程中,遇到了一个需求:用shell脚本实现对配置文件的读取,并将读取到的配置项写入到新的文件中。
为了完成该需求,我们考虑使用awk命令,该命令把文件中的内容逐行的读入,按照特定的规则对每行记录进行处理。
例如,我们要从文件Config.ini(位于当前用户的etc目录下)中获取各个配置项的值,并将之写入到NetworkInfo.txt文件中。其中,Config.ini文件的内容如下:
我们编写如下的shell脚本GetDatabaseConfig.sh:
将该脚本上传到Linux机器上,并使用“chmod 777 GetDatabaseConfig.sh”修改该脚本的权限,然后运行“./GetDatabaseConfig.sh”命令,结果如下:
同时,可以看到在当前目录下生成了NetworkInfo.txt文件,其内容为:
本文中的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脚本实现对配置文件的读取,并将读取到的配置项写入到新的文件中。
为了完成该需求,我们考虑使用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
相关文章推荐
- MySQL Database on Azure - 利用PowerShell快速创建使用数据库服务
- shell
- shell 总结
- 工作中实用shell脚本与语句
- 本地yum源的创建,以及shell脚本安装.
- GitHub Shell Command
- Git Bash下载Android源码
- Linux下通过rm -f删除大量文件时提示"-bash: /bin/rm: Argument list too long"的解决方法
- 浅谈获取shell中函数的返回值
- Bash shell学习_学习笔记
- powershell 部署域控制器
- 一个简单的wifi开关shell脚本实现
- 中文Win7下成功安装calabash-android步骤
- sqoop+hive+shell+oozie 示例
- 如何在HP-UX中安装bash?
- 再谈CSHELL对C程序员的价值
- powershell 汉洛塔
- shell根据系统硬盘大小删除文件
- shell if 多条件判断 时间大小比较
- shell之监控tomcat(一个tomcat)端口是否正常