- 11
- 0
- 约2.85千字
- 约 6页
- 2021-10-11 发布于河北
- 举报
浅谈 Shell 脚本配置文件格式
浅谈 Shell 脚本配置文件格式开发过程中为了削减hardcode,不行避开的需要供应配置文件给用户定制。对于高级编程语言来说,因为有丰富的第三方库,可供选择的配置文件格式有许多,比方xml、jsno、ini、yaml 等等。key=value 文本格式配置而对于linux shell,根本上很难用法前面提到的各种格式。所以在unix 系统上,许多shell 脚本的配置文件都是纯粹的key=value 文本格式,例如绝大多数的开机效劳启动脚本、网络配置文件等。例子1:ntp 配置文件$ cat /etc/sysconfig/ntpd# Drop root to id ntp:ntp by default.OPTIONS=-u ntp:ntp -p /var/run/ntpd.pid# Set to yes to sync hw clock after successful ntpdateSYNC_HWCLOCK=no# Additional options for ntpdateNTPDATE_OPTIONS=例子2:网络配置文件$ cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=http://.doczj/doc/a8780c5958fb770bf78a55b6.html 而且,要留意得是,一般key=value的等号两边不应当有空格,因为大多数脚本都是挺直source 配置文件的〔当然,也有局部脚本是会自己处理配置文件格式〕,用法起来很简洁,根本上没有解析的操作:$ cat /etc/init.d/networkif [ ! -f /etc/sysconfig/network ]; thenexit 0fi. /etc/sysconfig/network理所当然,这种格式无法满足更冗杂的配置文件需求,比方ini 格式的section。那么,在shell 中除了满世界去找一个解析库之外,能有什么方法可以实现呢?扩展key=value 文本格式配置假设,我们管理着n 个集群,每个集群配置项都是一样的,我们需要在shell 脚本中,可以依据集群的名称来导入对应的配置。下面我们介绍一种最简洁的方法,只需要针对第一种格式扩展下即可。我们创立一个配置文件名目conf.d,在这个名目下存放各个集群的配置文件。每个集群对应一个配置文件,文件名为集群名称,例如:$ cat conf.d/CLUSTER_Ac_cluster_name=CLUSTER_Ac_cluster_type=1在脚本中,我们可以这样来导入相应集群的配置:function load_config(){local cluster_name=$1if [ -f conf.d/$cluster_name ]; then. conf.d/$cluster_namefi}load_config CLUSTER_A因为各个集群的配置文件互相独立,所以假如包含一些全局范围的配置项,需要在每个配置文件中都增加。或者,再增加一个入口的配置文件:# cat global.confg_conf_dir=conf.d # 配置文件名目g_version=0.1 # 全局配置脚本相应调整下:GLOBAL_CONF=/etc/xxx/global.confif [ -f $GLOBAL_CONF ]; then. $GLOBAL_CONFfiif [[ $g_conf_dir != /* ]]; then # 假如是相对途径g_conf_dir=$(dirname $GLOBAL_CONF)/$g_conf_dirfifunction load_config(){local cluster_name=$1if [ -f $g_conf_dir/$cluster_name ]; then. $g_conf_dir/$cluster_namefi}load_config CLUSTER_A类ini 配置格式其次种方法,根本上已经可以解决我们之前假设中提出的需求,简洁而且实现便利,缺乏的是配置文件比拟零散,管理上可能不是很便利。假如,你仍旧倾向于一种类似ini 格式的配置,可以试试下面这种方法。在这种场景下,每个集群应当是一个独立的section,所以转换成ini 格式,配置文件应当是这样的:[DEFAULT]g_version=0.1 ; 全局配置[CLUSTER_A]c_cluster_name=CLUSTER_Ac_cluster_type=1但是,我们前面提到过,原生的shell
您可能关注的文档
- 浅谈现在招投标存在的问题和对策.docx
- 浅谈物资采购中存在的问题及整改措施.docx
- 浅谈现代企业管理决策.docx
- 浅谈焦作地名的文化渊源.docx
- 浅谈民商事案件调解工作常用的几种方法.docx
- 浅谈燃气建设工程投标报价的策略与方法(新版).docx
- 浅谈框架协议招标.docx
- 浅谈民商事案件调解.docx
- 浅谈无效建设工程施工合同的类型及处理原则.docx
- 浅谈格式合同.docx
- 03-2 2025年度民主生活会征求意见座谈会主持词.docx
- 03-1 2025年度民主生活会主持讲话提纲.docx
- 02-1 会前学习-《县以上党和国家机关党员领导干部民主生活会若干规定》相关要求.docx
- 在2025年度民主生活会上的总结讲话三篇.docx
- 在2025年度民主生活会上的总结讲话三篇 (3).docx
- 市委宣传部2025年度民主生活会查摆问题整改方案两篇.docx
- 在市行政审批和政务信息管理局机关2026年全体干部政绩观教育大会上的党课讲稿.docx
- X市应急管理局2026年度安全生产监督检查计划.docx
- 2025年度民主生活会领导班子对照检查材料(五个带头)三篇.docx
- 2025年度民主生活会“五个带头”个人对照检查材料三篇.docx
原创力文档

文档评论(0)