Android res复制脚本

devtools/2024/11/26 17:50:15/

./copy.sh A路径 B路径 文件名 key
./copy.sh A_res B_res strings.xml hello
将A_res文件为strings.xml中的hello,复制到项目B_res文件为strings.xml中

#!/bin/bash# 检查输入的参数数量
if [ "$#" -ne 4 ]; thenecho "用法: $0 <源路径> <目标路径> <目标文件名> <关键字>"exit 1
fi# 获取输入的四个参数oldPath=$1         # 源路径
newPath=$2         # 目标路径
targetFile=$3      # 目标文件名
keyword=$4         # 要查找的关键字# 定义获取字符串中心内容的函数
function getCenter {local one=$1local theLeft=`echo ${one#*\">}`local theCenter=`echo ${theLeft%<\/*}`echo "$theCenter"
}# 定义删除文件末尾多余空行的函数
function deleteBlankRow() {local line=$1local a=`awk '{if($0 != "") {i = 0} else {i++}} END {print i}' $line` # 获取末尾空行数if [ "$a" -ne 0 ]; thenfor ((i=1; i<=a; i++)); dosed -i -e '$ {/^$/d;}' $line # 删除末尾空行donefi
}# 进入源路径并查找指定文件
cd "$oldPath" || exit
find . -name "$targetFile" -type f | cut -c3- > stringList.txt# 定义注释内容
strt="<!--SR: modify by $(whoami) $(date +%Y%m%d) start-->"
endd="<!--SR: modify by $(whoami) $(date +%Y%m%d) end-->"# 循环读取文件列表中的每一行
while read -r line; doss=`grep -wh "$keyword" "$line"`  # 在文件中查找关键字if [ -z "$ss" ]; thencontinuefi# 切换到目标路径cd "$newPath" || exitif [ -e "$line" ]; thenww=`grep -wh "$keyword" "$line"`if [ -z "$ww" ]; then# 如果目标文件中没有关键字内容deleteBlankRow "$line"sed -i '$d' "$line"echo -e "$ss" >> "$line"echo "</resources>" >> "$line"#dos2unix "$line"  # 转换文件格式,去掉 ^Mcd "$oldPath" || exitcontinueelse# 如果目标文件中有关键字内容,比较字符串L=`grep -wn "$keyword" "$line" | cut -d : -f 1`nr=`sed -n "${L}p" "$line"`nrCenter=`getCenter "$nr"`ssCenter=`getCenter "$ss"`if [[ "$ssCenter" == "$nrCenter" ]]; thencd "$oldPath" || exitecho "相等"continueelseecho "不相等"fi# 移植字符串并添加注释theLeft=`echo ${nr%\">*}`kn=`echo "${nr%%<*}" | wc -L`sed -i "${L}d" "$line"ssRight=`echo ${ss#*\">}`ssNew=$theLeft\">$ssRightfor (( j=1; j<$kn; j++ )); dostrt=" ${strt}"endd=" ${endd}"ssNew=" ${ssNew}"donesed -i "${L}i\\ ${ssNew}" "$line"sed -i "${L}i\\ ${strt}" "$line"sed -i "$((L+2))i\\ ${endd}" "$line"#dos2unix "$line"  # 转换文件格式,去掉 ^Mcd "$oldPath" || exitcontinuefielseecho "$line 文件不存在"cd "$oldPath" || exitcontinuefi
done < stringList.txt# 清理临时文件
rm stringList.txt

http://www.ppmy.cn/devtools/137177.html

相关文章

基于微信小程序的空巢老人健康管理系统

摘 要 随着社会老龄化程度不断加深&#xff0c;空巢老人的健康管理成为一个日益重要的问题。为了更好地关注和管理空巢老人的健康状况&#xff0c;本文利用Spring Boot框架和MySQL数据库&#xff0c;结合微信小程序等技术&#xff0c;设计并实现了一套基于微信小程序的空巢老人…

Android adb shell dumpsys audio 信息查看分析详解

Android adb shell dumpsys audio 信息查看分析详解 一、前言 Android 如果要分析当前设备的声音通道相关日志&#xff0c; 仅仅看AudioService的日志是看不到啥日志的&#xff0c;但是看整个audio关键字的日志又太多太乱了&#xff0c; 所以可以看一下系统提供的一个调试指令…

【智能制造-43】机器人导出的轴配置问题

机器人导出的轴配置问题通常指的是机器人在执行运动指令时&#xff0c;机器人TCP无法按照指定的轴配置方案到达目标点&#xff0c;或者轴配置监督被触发的情况。‌ 这里提到的轴配置方案和目标点等信息&#xff0c;都是存储在位置数据&#xff08;robotarget&#xff09;中的。…

开源客户关系管理平台EspoCRM

简介 什么是 EspoCRM &#xff1f; EspoCRM 是一个开源的客户关系管理&#xff08;CRM&#xff09;平台&#xff0c;旨在帮助组织建立和维护良好的客户关系。它提供了多种工具&#xff0c;用于存储、组织和管理潜在客户、联系人、销售机会、营销活动和支持案例等业务信息&…

5种常见的k8s云原生数据管理方案详解

Kubernetes&#xff08;K8s&#xff09;是云原生架构的核心组件&#xff0c;提供高效的容器编排和管理功能。在数据存储方面&#xff0c;K8s通过PersistentVolumes&#xff08;PV&#xff09;和PersistentVolumeClaims&#xff08;PVC&#xff09;机制实现数据持久化&#xff0…

[C++]了解内置类型升级

内置类型升级 1.调用模板T时&#xff0c;为什么可以使用T()类型的匿名对象来传参2.内置类型被升级成为类后的使用事项 1.调用模板T时&#xff0c;为什么可以使用T()类型的匿名对象来传参 当我们在定义或声明一个函数时&#xff0c;如果想使用模板T类型的默认构造&#xff08;例…

Git Github Gitlab与Gitee的关系

Git是代码版本管理工具 -------项目通过Git可以切换到任意代码版本 Github和Gitee是基于Git技术构建的远程仓库网站 -------可以将你的代码仓库提交上去保存 GitHub与Gitee的区别 -------前者是国外建立,资源更丰富,后者是国内建立,免费功能更多 Gitlab和Github功能类似 …

C++结构型设计模式之桥接模式

桥接模式的意图和动机 桥接模式的意图是将抽象部分与它的实现部分分离&#xff0c;使它们可以独立地变化。这意味着你可以独立地修改或扩展抽象部分和实现部分&#xff0c;而不会相互影响。桥接模式的主要动机是通过这种分离来增强系统的灵活性和可扩展性。 桥接模式适用于解…