Shell脚本读取配置文件

本文介绍了如何在Shell脚本中读取和操作ini配置文件。通过awk命令解析文件,匹配特定section和option,获取并打印所需值。示例中讲解了getconfig函数的实现,用于提取指定section的配置项,并演示了如何调用该函数处理myconfig.ini文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell脚本读取配置文件

这里参考了下面这篇博客
https://blog.youkuaiyun.com/liubeck/article/details/7497156
不过按照上面的代码好像有点问题,后来搞了半天实现了需求。
配置文件为myconfig.ini

[Class]
ids=student1,student2,student3
files=profilefile
 
[student1]
name=LiLei
age=16
 
[student2]
name=HanMeiMei
age=15
 
[student3]
name=Lucy
age=15

如何取[student1]下面name的值呢?用下面这行代码:

awk -F '=' '/\[student1\]/{a=1}a==1&&$1~/name/{print $2;exit}' myconfig.ini 

这句指令涉及到的内容挺多的,查了半天才搞明白,详细解释一下:

  1. 首先这句指令用了awk命令,awk命令通常是将所列出的行,根据条件打印出某一列或几列,想多了解的话可以参考下网上资料
    https://www.cnblogs.com/ftl1012/p/9250541.html

  2. “-F” 是awk命令的一个选项,用来指定后面记录(行)的分隔符号,就是确定用什么作为分隔符号把记录分成一个一个的域,这里后面跟的 ‘=’ 表示用等号来分隔。

  3. 再往后单引号中间是awk命令,awk命令由模式和动作组成,模式是一组用来测试输入行是否需要执行动作的规则,动作是包含语句、函数和表达式的执行过程,简单来说就是模式决定动作何时触发和触发事件,动作执行对输入行的处理。

  4. / \ [student1 \ ]/ 这就是上面说的awk命令的模式,模式与动作之间用 / 来分开,表示匹配到这个模式的话执行后面的动作,这里要匹配的是 [strudent1] ,因为方括号[ ] 在shell中有特殊的意义,使用转义符号\ 表示单纯的 [ ] 符号,所以这里就是[strudent1] 。

  5. {a=1} 花括号里面的内容是awk命令的动作,这里就是给a赋值为1.

  6. a==1&&$1~/name/ 这里又是一个模式匹配,先是判断a是否等于1(因为刚才已经给a赋值为1,所以这里肯定相等),还要$1~/name/,$1表示第一域,就是字符串用分隔符号分割后的第一段, ~ 符号在awk命令中是关系运算符号,表示匹配正则表达式,这里就是要第一域为name

  7. {print $2;exit} 这里又是一个动作,打印第二域,即第一域name的取值,然后退出awk命令。

  8. myconfig.ini 当然表示对 myconfig.ini 文件的操作。
    这句话整体的含义就是: 对 myconfig.ini 文件进行操作,用=对每一行进行分割,找到匹配[student1]的section,再从 [student1] 下面找到name这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值