公司的modem代码一直由驱动维护,分为新编译方式和传统编译方式两种方法,在编译时需要手动查找需要编译的modem是在新编译方式的脚本里,还是传统编译方式的脚本里,然后再覆盖不同编译脚本,再执行编译;整个查找过程耗时且繁琐,故重写编译脚本执行快速编译。
明确需求:
1.简化传统modem查找编译过程:从bcompile37ali.sh脚本中查找到相应modem的编译代码,覆盖bcompile37ali_single.sh,再执行bcompile37ali_single.sh进行编译。
2.简化新modem查找编译过程:查找modem_name.sh脚本,覆盖mdmk.sh脚本,再执行mdmk.sh脚本编译。
使用方式:
./lmk_modem.sh modem_name
脚本代码:
——lttg——
#!/bin/sh
MODEM_NAME=$1
GREEN="\033[0;32m"
NO_COLOR="\033[0m"
RED="\033[0;31m"
YELLOW="\033[1;33m"
if [ ! -n "$MODEM_NAME" ] ;then
echo "--------------------------------------------"
echo ""
echo ""
echo ""
echo "please used like './lmk_modem.sh modem_name'"
echo ""
echo ""
echo ""
echo "--------------------------------------------"
exit
fi
NEW_MODEM=`eval echo '$'MODEM_NAME |cut -d '_' -f 1-2`
OLD_MODEM=`eval echo '$'MODEM_NAME |cut -d '_' -f 1-3`
echo " "
echo " "
echo $NEW_MODEM
echo $OLD_MODEM
echo " "
echo " "
cd teksun_modem/mdcfg_list/
SH_MODEM=$(find ./ -name *${NEW_MODEM}*.sh)
if [ -n "$SH_MODEM" ] ;then
rm -rf ../mdcfg.sh
cp -rf $SH_MODEM ../mdcfg.sh
cd -
./mdmk.sh
exit 1;
else
cd -
str=$(cat bcompile37ali.sh)
modem_exit=`echo ${str} |grep "${OLD_MODEM}"|wc -l`
if [ $modem_exit = "1" ];then
true >bcompile37ali_single.sh
echo "#!/bin/sh" >>bcompile37ali_single.sh
start_line=$(grep -n $OLD_MODEM bcompile37ali.sh | head -n 1 | cut -d : -f 1)
end_line=$(grep -n $OLD_MODEM bcompile37ali.sh | tail -1 | cut -d : -f 1)
for((i=$start_line;i<=$end_line;i=i+1))
do
head -n $i bcompile37ali.sh | tail -n 1 >>bcompile37ali_single.sh
done
./bcompile37ali_single.sh
echo " "
echo " "
exit 1;
else
echo " "
echo " "
echo "未找到此modem,请联系相关驱动"
echo " "
echo " "
exit 1;
fi
exit 1;
fi
——c2k——
#!/bin/sh
MODEM_NAME=$1
if [ ! -n "$MODEM_NAME" ] ;then
echo "--------------------------------------------"
echo ""
echo ""
echo ""
echo "please used like './lmk_modem.sh modem_name'"
echo ""
echo ""
echo ""
echo "--------------------------------------------"
exit
fi
NEW_MODEM=`eval echo '$'MODEM_NAME |cut -d '_' -f 1-2`
echo " "
echo " "
echo $NEW_MODEM
echo $OLD_MODEM
echo " "
echo " "
cd teksun_modem/mdcfg_list/
SH_MODEM=$(find ./ -name *${NEW_MODEM}*.bat)
if [ -n "$SH_MODEM" ] ;then
rm -rf ../mdcfg.bat
cp -rf $SH_MODEM ../mdcfg.bat
cd -
echo " "
echo " "
echo "teksun:$NEW_MODEM-----请在windows下执行mdmk.bat批处理文件-------"
echo " "
echo " "
exit 1;
else
cd -
str=$(cat bcompile37alic2k.sh)
modem_exit=`echo ${str} |grep "${MODEM_NAME}"|wc -l`
if [ $modem_exit = "1" ];then
true >bcompile37alic2k_single.sh
echo "#!/bin/sh" >>bcompile37alic2k_single.sh
arr=`eval echo '$'$(grep -n $MODEM_NAME bcompile37alic2k.sh) |cut -d " " -f 3`
OLD_MODEM=`eval echo '$'arr|cut -d '_' -f 1-3`
echo $OLD_MODEM
cp_line=$(grep -n $MODEM_NAME bcompile37alic2k.sh | head -n 1 | cut -d : -f 1)
start_line=$(grep -n $OLD_MODEM bcompile37alic2k.sh | head -n 1 | cut -d : -f 1)
end_line=`sed -n '/'$OLD_MODEM'/{:a;n;/fi/{=;q};ba;}' bcompile37alic2k.sh`
for((i=$start_line;i<=$end_line;i=i+1))
do
head -n $i bcompile37alic2k.sh | tail -n 1 >>bcompile37alic2k_single.sh
done
head -n $cp_line bcompile37alic2k.sh | tail -n 1 >>bcompile37alic2k_single.sh
./bcompile37alic2k_single.sh
echo " "
echo " "
exit 1;
else
echo " "
echo " "
echo "未找到此modem,请联系相关驱动"
echo " "
echo " "
exit 1;
fi
exit 1;
fi