linux shell 读取配置文件

随着linux接触的越来越多,我们难免需要从一些配置文件中进行读取配置参数,linux中shell属于脚本型语言,读取时没有其它语言方便,特将用过的一种方式分享给大家

实战代码

$ more a.txt
name=hello world
age=22
ip=192.168.1.1

$ sed '/^name=/!d; s/.*=//' a.txt
hello world
$ sed '/^age=/!d; s/.*=//' a.txt
22
$ sed '/^ip=/!d; s/.*=//' a.txt
192.168.1.1

命令讲解

sed '/^name=/!d; s/.*=//' a.txt为例,这里面实际上执行了2次sed分别是

$ sed '/^name=/!d ' a.txt
name=hello world
bogon:temp didi$ sed 's/.*=//' a.txt
hello world
22
192.168.1.1

聪明伶俐的你一定看出来了,2次sed是以“;”进行分开执行的,
前面的’/^name=/!d '属于正则匹配,得到满足规则的行
后面的’s/.*=//'属于正则替换,将“=”及“=”前面的内容替换掉(由于//之间没有内容,相当于将“=”及“=”前面的内容删除掉)

命令封装成公共脚本或者函数

每次都这么复杂的获取配置值sed '/^name=/!d; s/.*=//' a.txt是不是觉得很麻烦很low呀,接下来我带大家封装成一个公共脚本吧

$ more getval.sh
configfile=$1
key=$2
sed "/^$key=/"'!d; s/.*=//' $configfile

$ ./getval.sh a.txt name
hello world
$ ./getval.sh a.txt age
22
$ ./getval.sh a.txt ip
192.168.1.1

脚本内容讲解

比较奇怪的是就是这个命令了
sed "/^$key=/"'!d; s/.*=//' $configfile
为什么既有双引号又有引号呢,先科普下吧

  • 单引号:
    可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看见的是什么就会输出什么。
  • 双引号:
    把双引号内的内容输出出来;如果内容中有命令,变量等,会先把变量,命令解析出结果,然后在输出最终内容来。

其中命令$key是需要解析出结果的,而命令!d我们不需要解析出结果的,所以上面我们分别采用了双引号和单引号来解决这个问题,如是还没有看懂的话可以私信我哈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值