zoukankan      html  css  js  c++  java
  • [Shell]通过shell修改build.gradle配置文件

    我的需求:

    自动化打包前,修改版本号

     

    思路如下:

    1.获取要修改字符串在build.gradle配置文件的所在行

    2.整行删除旧字符串

    3.新将新字符串写入配置文件

     

    技术点:

    • sed读写配置文件
    • 获取指定字符串所在行
    • 将字符串写入配置文件指定位置(指定行)
    • 拼接字符串,字符串包含特殊符号,双隐号,单隐号,转义符号的使用

     

    build.gradle配置文件内容如下:

      defaultConfig {
            applicationId "com.wawj.app.t"
    //        applicationId "com.wawj.app.tt"
            minSdkVersion 16
            targetSdkVersion 26
            versionCode 20191226
            versionName "8.8.8" #要修改的字符串 
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunn$
            multiDexEnabled true
    //        resConfigs "en", "de", "fr", "it"git
    //        resConfigs "nodpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi"
            ndk {
                //极光推送--选择要添加的对应cpu类型的.so库
                abiFilters 'xx', 'xx-xxxa', 'xxx'
            }
        

     

    脚本如下:

    cd AppFrameWork/app/ #build.gradle配置文件所在目录
    
    VERSION=" versionName "$Version"" #拼接修改后的字符串
    #获取行数,并保存到变量
    line=$(sed -n '/versionName/=' build.gradle) #获取要修改的字符串所在行,并将它保存到变量line
    echo "版本号所在行$line"
    
    #插入内容的位置
    newline=$(expr $line - 1)#计算要插入行的的行号,因后面使用 追加(注意不是插入)的方式将要修改的字符串 追加所在行,所以里这里要将line-1,写入字符串的位置才是准确的
    #删除指定行
    sed  -i  "$line  d"   build.gradle
    
    #在指定行追加要字符串,并保存修改( -i表示保存修改)
    sed -i "$newline a\$VERSION" build.gradle
    echo "修改的版本号是$VERSION"
  • 相关阅读:
    Linux系统中pssh系列工具的使用
    Linux软件包管理和磁盘管理实践
    Linux系统自动化安装之pxe实现
    Linux系统SSH服务基于key认证实践
    Linux系统文本处理之awk数组实践
    Linux访问控制列表
    Linux系统中SSH端口转发
    (转)python的range()函数用法
    Python 学习之list和Tuple类型
    List<String> 和 ArrayList<String>的区别
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/12132369.html
Copyright © 2011-2022 走看看