Shell脚本读取配置文件

Shell脚本读取配置文件

这里参考了下面这篇博客
https://blog.csdn.net/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

  • 18
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值