关于clone_mmi.sh脚本简单解读

一小段代码:

function write_xml()
{
change=${!1}
if [ $change ]; then
   if [ $change = "sr_null" ];then
#     sed -i "s/\"$control\">.*</\"$control\"></" $path
      sed -i "/\"$1\"/s/\">.*</\"></" $path
   else
#     sed -i "s/\"$control\">.*</\"$control\">$change</" $path
      sed -i "/\"$1\"/s/\">.*</\">$change</" $path
   fi
   echo "$1 = $change"
#else
#  echo "$control is not be setted"
fi
}

//“1"代表第一个参数,”${!1}"代表间接引用参数1的值
比如: a = true; c= ${!1},其实表示将a的值间接赋给c, c= true;

if[$change];then 判断是否获取到值

sed -i "/\"$1\"/s/\">.*</\">$change</" $path

sed -i 表示字符串查找并替换
$1表示获取第一个参数
/"$1"/s/">.*< 其实就是参数1之后"><“之间的”.字符","."所有字符

$change</ 获取简介引用的字符并修改到><节点中

if[$change = “sr_null”];then判断获取到的值是否是sr_null,如果是,则替换为空字符串

$path相关修改的文件
总的来说,就是如果参数1的字符串有被赋值,那么就在path路径下找到参数1的字符串,并将参数1后的尖括号中><的字符串替换为赋值的字符串。

那么${!1}这个参数是怎么从projectConfig.mk中获取出来的呢?
我们来看一下makesagereal这个脚本,其中有如下一段:

$prj = "../sagereal/mk/$new_project/ProjectConfig.mk";
open (FILE_HANDLE, "<$prj") or die "cannot open $prj\n";
while (<FILE_HANDLE>)
{
  if (/^(\S+)\s*=\s*(\S+)/)
  {
    $ENV{$1} = $2;
  }
}

其实类似我们的HashMap,将value对应的key保存起来,那么在后续的调用中就可以直接获取出来。
modified for default date(2016/11/01)

if [ $default_restore_year ];then
sed -i "/RTC_DEFAULT_YEA/s/RTC_DEFAULT_YEA.*/RTC_DEFAULT_YEA    $default_restore_year/" ../alps/mediatek/custom/$base_project/preloader/inc/cust_rtc.h
sed -i "/RTC_DEFAULT_YEA/s/RTC_DEFAULT_YEA.*/RTC_DEFAULT_YEA    $default_restore_year/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt.h
sed -i "/RTC_DEFAULT_YEA/s/RTC_DEFAULT_YEA.*/RTC_DEFAULT_YEA    $default_restore_year/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt6575.h
fi
if [ $default_restore_month ];then
sed -i "/RTC_DEFAULT_MTH/s/RTC_DEFAULT_MTH.*/RTC_DEFAULT_MTH    $default_restore_month/" ../alps/mediatek/custom/$base_project/preloader/inc/cust_rtc.h
sed -i "/RTC_DEFAULT_MTH/s/RTC_DEFAULT_MTH.*/RTC_DEFAULT_MTH    $default_restore_month/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt.h
sed -i "/RTC_DEFAULT_MTH/s/RTC_DEFAULT_MTH.*/RTC_DEFAULT_MTH    $default_restore_month/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt6575.h
fi
if [ $default_restore_day ];then
sed -i "/RTC_DEFAULT_DOM/s/RTC_DEFAULT_DOM.*/RTC_DEFAULT_DOM    $default_restore_day/" ../alps/mediatek/custom/$base_project/preloader/inc/cust_rtc.h
sed -i "/RTC_DEFAULT_DOM/s/RTC_DEFAULT_DOM.*/RTC_DEFAULT_DOM    $default_restore_day/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt.h
sed -i "/RTC_DEFAULT_DOM/s/RTC_DEFAULT_DOM.*/RTC_DEFAULT_DOM    $default_restore_day/" ../alps/mediatek/custom/$base_project/kernel/rtc/rtc/rtc-mt6575.h
fi
#DESCRIPTION:Resource namespaces pidns01 pidns01 pidns02 pidns02 pidns03 pidns03 pidns04 pidns04 pidns05 pidns05 pidns06 pidns06 pidns10 pidns10 pidns12 pidns12 pidns13 pidns13 pidns16 pidns16 pidns17 pidns17 pidns20 pidns20 pidns30 pidns30 pidns31 pidns31 pidns32 pidns32 mqns_01 mqns_01 mqns_01_clone mqns_01 -m clone mqns_01_unshare mqns_01 -m unshare mqns_02 mqns_02 mqns_02_clone mqns_02 -m clone mqns_02_unshare mqns_02 -m unshare mqns_03 mqns_03 mqns_03_clone mqns_03 -clone mqns_04 mqns_04 mqns_04_clone mqns_04 -clone netns_netlink netns_netlink netns_breakns_ip_ipv4_netlink netns_breakns.sh netns_breakns_ip_ipv6_netlink netns_breakns.sh -6 netns_breakns_ip_ipv4_ioctl netns_breakns.sh -I netns_breakns_ip_ipv6_ioctl netns_breakns.sh -6I netns_breakns_ns_exec_ipv4_netlink netns_breakns.sh -e netns_breakns_ns_exec_ipv6_netlink netns_breakns.sh -6e netns_breakns_ns_exec_ipv4_ioctl netns_breakns.sh -eI netns_breakns_ns_exec_ipv6_ioctl netns_breakns.sh -6eI netns_comm_ip_ipv4_netlink netns_comm.sh netns_comm_ip_ipv6_netlink netns_comm.sh -6 netns_comm_ip_ipv4_ioctl netns_comm.sh -I netns_comm_ip_ipv6_ioctl netns_comm.sh -6I netns_comm_ns_exec_ipv4_netlink netns_comm.sh -e netns_comm_ns_exec_ipv6_netlink netns_comm.sh -6e netns_comm_ns_exec_ipv4_ioctl netns_comm.sh -eI netns_comm_ns_exec_ipv6_ioctl netns_comm.sh -6eI netns_sysfs netns_sysfs.sh shmnstest_none shmnstest -m none shmnstest_clone shmnstest -m clone shmnstest_unshare shmnstest -m unshare shmem_2nstest_none shmem_2nstest -m none shmem_2nstest_clone shmem_2nstest -m clone shmem_2nstest_unshare shmem_2nstest -m unshare shm_comm shm_comm mesgq_nstest_none mesgq_nstest -m none mesgq_nstest_clone mesgq_nstest -m clone mesgq_nstest_unshare mesgq_nstest -m unshare msg_comm msg_comm sem_nstest_none sem_nstest -m none sem_nstest_clone sem_nstest -m clone sem_nstest_unshare sem_nstest -m unshare semtest_2ns_none semtest_2ns -m none semtest_2ns_clone semtest_2ns -m clone semtest_2ns_unshare semtest_2ns -m unshare sem_comm sem_comm utsname01 utsname01 utsname02 utsname02 utsname03_clone utsname03 -m clone utsname03_unshare utsname03 -m unshare utsname04_clone utsname04 -m clone utsname04_unshare utsname04 -m unshare mountns01 mountns01 mountns02 mountns02 mountns03 mountns03 mountns04 mountns04 userns01 userns01 userns02 userns02 userns03 userns03 userns04 userns04 userns05 userns05 userns06 userns06 userns07 userns07 userns08 userns08 # time namespaces sysinfo03 sysinfo03 clock_nanosleep03 clock_nanosleep03 clock_gettime03 clock_gettime03 timens01 timens01 timerfd04 timerfd04
07-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值