[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"

你可能感兴趣的:([Shell]通过shell修改build.gradle配置文件)