如何使用shell脚本在执行build.gradle前查找替换指定配置行
可靠实现方案
实现思路
- 放弃固定行号匹配逻辑,改为先定位到
exportBatch/importBatch对应的task代码块范围 - 仅在对应块范围内匹配目标
commandLine行做替换,只要task名称和内部核心结构不变,前后其他代码增减、行号变动都不会影响替换准确性
具体shell脚本实现
直接执行以下脚本即可完成替换,默认直接修改build.gradle文件:
# GNU sed 适用(大部分Linux发行版默认自带) sed -i ' # 替换exportBatch块内的commandLine /task exportBatch/,/}/ s/commandLine = \['\''cmd'\'', '\''\/C'\'', '\''start'\'', '\''export\.bat'\''\]/commandLine '\''sh'\'', '\''\.\/export\.sh'\''/ # 替换importBatch块内的commandLine /task importBatch/,/}/ s/commandLine = \['\''cmd'\'', '\''\/C'\'', '\''start'\'', '\''import\.bat'\''\]/commandLine '\''sh'\'', '\''\.\/import\.sh'\''/ ' build.gradle
如果需要保留原文件备份,将第一行的-i改为-i.bak,执行后会自动生成build.gradle.bak备份文件。
注意事项
- 若在macOS环境执行,需要将
-i参数改为-i '',其余替换规则保持不变 - 替换完成后可执行
grep -A3 -B3 'commandLine' build.gradle验证替换结果是否符合预期
内容的提问来源于stack exchange,提问作者Wolf
相关产品推荐
相关产品推荐

