一个用于导出android项目配置宏为单个独立xml文件的shell脚本
来源:互联网 发布:淘宝鞋店装修模板 编辑:程序博客网 时间:2024/06/04 18:19
一个用于导出android项目配置宏为单个独立xml文件的shell脚本
最近由于工作需要将android项目的项目配置文件里面的宏文件导出来,项目配置宏文件内容如下所示:
GEMINI=yesGOOGLE_RELEASE_RIL=noHAVE_AACENCODE_FEATURE=yesHAVE_AEE_FEATURE=yesHAVE_APPC_FEATURE=noHAVE_AWBENCODE_FEATURE=yesHAVE_CMMB_FEATURE=noHAVE_GROUP_SCHEDULING=no
现在需要将这些宏导出来,由大写字母改成小写字母,类似于如下的xml文件格式:
<?xml version="1.0" encoding="utf-8"?><permissions><feature name="mtk_fm_recording_support" /></permissions>
由于项目配置文件里面的宏很多,手工操作非常麻烦,而且扩展性很不好,因此需要shell脚本使操作自动化,编写出来的脚本文件如下:
#!/bin/bash##Description:#Used to export the ProjectConfig.mk items to different xml files.##History:#tcpipstack, Oct.,29th, 2012, created it.#tcpipstack, Oct.,30th, 2012, modified for add the read LINE and process it.##--------------------------------------------------------------------------------------------DATE=`date +%F-%H`#FN_EXEC_RESULT=0FN_EXEC_RESULT_SUCCESS=0FN_EXEC_RESULT_ERR=1# orginal project config fileSRC_PRJ_CFG_FILE=/work/code/linux/shell/PrjCfgExportXml/ProjectConfig.mk# destination project config file.DST_PRJ_CFG_FILE=/work/code/linux/shell/PrjCfgExportXml/Dst_PrjCfg.mk#SRC_FILE_NAME=${SRC_PRJ_CFG_FILE}DST_FILE_NAME=${DST_PRJ_CFG_FILE}#--------------------------------------------------------------------------------------------# if unexpect event happens, it will process here.function fn_check_error() {echo "fn_check_error..."exit=$?echo "exit = ${exit}"if [ ${exit} != 0 ] ; thenecho " Error code ${exit}"fn_exit ${exit};fi}# sub function exit with error code.function fn_exit(){local fn_exit_code=${1}exit ${fn_exit_code}}# print the global parametersfunction fn_print_global_params(){echo -e "\nfn_print_global_params..."echo "--------YES_OR_NO:${YES_OR_NO}"}# filter LINEs include the string of yes or no.function fn_filter_special_LINE(){echo -e "\nfn_filter_special_LINE..." if [[ "${YES_OR_NO}" == "yes" ]]; thenecho "${YES_OR_NO} == yes"sed -n '/yes\|YES/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}elif [[ "${YES_OR_NO}" == "no" ]]; thenecho "${YES_OR_NO} == no" sed -n '/no\|NO/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}elsefn_exit ${FN_EXEC_RESULT_ERR}fifn_check_error}# read every LINE and process function fn_while_read_LINE(){echo -e "\nfn_while_read_LINE..."cat ${DST_FILE_NAME} | while read LINEdoecho "$LINE"fn_process_LINE_items $LINE:done}# process every LINEfunction fn_process_LINE_items(){echo "fn_process_LINE_items: ${1}"local CFG_ITEM=${1}fn_write_cfg_2_xml ${CFG_ITEM}}# write the project config information to xml filefunction fn_write_cfg_2_xml(){echo "fn_write_cfg_2_xml: ${1}"local XML_FILE_NAME=${1}echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" > ${XML_FILE_NAME}echo "<permissions>" >> ${XML_FILE_NAME}echo "<feature name=\"${1}\" />" >> ${XML_FILE_NAME}echo "</permissions>" >> ${XML_FILE_NAME}mv ${XML_FILE_NAME} ${XML_FILE_NAME}.xml}#--------------------------------------------------------------------------------------------echo -e "\n========================Start...========================\n"dateif [ $# != 1 ];thenecho "ERR: U must input one parameter: yes or no. Exit!"fn_exit ${FN_EXEC_RESULT_ERR}elseYES_OR_NO=${1}fifn_print_global_paramsfn_filter_special_LINEfn_while_read_LINEecho -e "\n========================End! ========================\n"
上述脚本里面最关键的就是这条语句,参考sed的用法可以参考这篇博客:http://blog.csdn.net/tcpipstack/article/details/8125819:
sed -n '/yes\|YES/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}
使用方法,在终端上输入如下:
bash prj_cfg_export_xml.sh yes/no
- 一个用于导出android项目配置宏为单个独立xml文件的shell脚本
- 独立编译单个C文件快速shell脚本
- tomcat用于加载项目的.xml文件配置
- 将TensorFlow的网络导出为单个文件
- 自己写的Python脚本 用于文件按照小时合并且单个文件不超过200M
- 一个用于批量下载网络图片的Shell脚本
- 一个用于批量下载网络图片的Shell脚本
- shell实现,将mysql每个存储过程导出为单个文件
- 项目中一个用于导出word的方法
- shell脚本,用于自动构建xcode项目
- Shell之导出数据库的表为Excel的脚本
- 使用shell脚本为项目快速创建文件
- 用shell脚本获取一个github项目所有文件的历史信息
- shell脚本解析XMl文件
- shell脚本生成xml文件
- shell脚本将text文件中的文件名筛选转化成独立的文件
- Eclipse中Android项目XML文件的格式化配置
- Eclipse中Android项目XML文件的格式化配置
- 茂达电子推出一款DC/DC同步升压转换器--APW7079
- CCScale9Sprite 用法
- ios4 怎么获取视频的总时长
- 查看图像的颜色在RGB空间中的分布
- OGRE1.8.1+MyGUI3.2.0+VS2010 编译配置图文详解
- 一个用于导出android项目配置宏为单个独立xml文件的shell脚本
- 求二叉树中序遍历的第一个结点(向左一路狂奔吧)
- C++利用vector实现随机选N项
- 傅立叶变换(zz)
- sql server Bulk 批量导入大量数据
- mysql存储引擎介绍
- Oracle数据块体系的详细介绍
- cocos2d-x 中使用lua
- jquery 跨iframe拖拽