美文网首页
通过Shell脚本读取properties文件中的参数

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

作者: SetZero | 来源:发表于2018-10-19 10:27 被阅读0次

    问题具体描述

    • 目标:读取*.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文件中的参数

          本文链接:https://www.haomeiwen.com/subject/ricyzftx.html