通过Shell脚本读取properties文件中的参数

问题具体描述

  • 目标:读取*.properties文件,获取里面的键值对。
  • 遇到的问题:通过shell脚本读取*.properties文件时,由于其key-value格式分行存储,在linux中获取到的value值最后有一个\r参数(可以通过sh -x app.sh查看到),导致得到的值跟预期的不一致。

简单键值对

定义键值对pom.properties如下:

version=1.0
groupId=project.parent
artifactId=com.lxk.cms.admin.service

原始版本

  • 这样写在控制台打印出来看着是很正常的,因为\r已被echo所处理,所以看不出什么,但输出到文本中每个值后边都会跟上 这样一个乱码。
. pom.properties
ver=$version
art=$artifactId
echo $ver
echo $art

优化版本

  • 去除后边的\r后一切正常。
. pom.properties
ver=$(echo $version | sed 's/\r//')
art=$(echo $artifactId | sed 's/\r//')

复杂键值对

很多时候我们定义key的时候会想下面一样进行分组,此时使用上面的所使用的.进行加载键值对shell就会报错,那么我们可以使用grep命令进行解决:

定义键值对pom.properties如下:

redis.ip=127.0.0.1
redis.port=6379
redis.db=8

写成一个函数,将所需的key传入即可,最后也须将\r去除

prop(){
    grep "${1}" pom.properties | cut -d'=' -f2 | sed 's/\r//'
}

参考链接

你可能感兴趣的:(通过Shell脚本读取properties文件中的参数)