1、我们的平台编译kernel的时候总是要输入项目名称,很麻烦
################################################
## Compile kernel and pack it into boot.img ##
################################################
#!/bin/sh
PROJECT=$1
echo $PROJECT
if [ "$1" = "" ];then
echo "Use: makeMtk.ini file for the mkkernel project_name"
#exit 修改 sen -n "1p" makeMtk.ini获取makeMtk.ini的第一行数据
#awk '{print $3}'获取第三个参数
#read LINE 把之前传进来的参数读取出来
sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINE
do
PROJECT=$LINE
./makeMtk $PROJECT new kernel
./makeMtk $PROJECT remake kernel
echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
done
#编译完成后退出
exit
else
echo "Use: $1 for the project name"
PROJECT=$1
fi
echo ./makeMtk $PROJECT new kernel
./makeMtk $PROJECT remake kernel
echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
代码里面我们每次要编译内核的时候都要输入./mkkernel mid713l_lp_lvds mid713l_lp_lvds 是项目名称,我觉得很麻烦。
2、sed读取文件的某一行
读取文件的某一行可以看看sed 这个命令
sed -n “1p” mkkernel 显示文件的第一行
sed -n “1,4p” mkkernel 显示文件第一行到第四行
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ sed -n "1p" mkkernel
################################################
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ sed -n "1,4p" mkkernel
################################################
## Compile kernel and pack it into boot.img ##
################################################
#!/bin/sh
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$
1
2
3
4
5
6
7
8
3、 awk截取某一列
awk ‘{print $3}’ 把管道前面的第三列显示出来
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.ini
project = mid713l_lp_lvds
build_mode = eng
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat makeMtk.ini |awk '{print $3}'
mid713l_lp_lvds
eng
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$
1
2
3
4
5
6
7
8
4、while read LINE ;do done 读取文件
do done会重新起一个子shell 这是为什么我不能把$LINE传下去的原因
sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINE
do
PROJECT=$LINE
./makeMtk $PROJECT new kernel
./makeMtk $PROJECT remake kernel
echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
done
1
2
3
4
5
6
7
8
5、用set -x set +x调试上面的说法
################################################
## Compile kernel and pack it into boot.img ##
################################################
#!/bin/sh
set -x
if [ "$1" = "" ];then
echo "Use: makeMtk.ini file for the mkkernel project_name"
#exit 修改 sen -n "1p" makeMtk.ini获取makeMtk.ini的第一行数据
#awk '{print $3}'获取第三个参数
#read LINE 把之前传进来的参数读取出来
sed -n "1p" makeMtk.ini|awk '{print $3}'|while read LINE
do
PROJECT=$LINE
echo $PROJECT
break
done
echo $PROJECT
#编译完成后退出
#exit
else
echo "Use: $1 for the project name"
PROJECT=$1
fi
echo ./makeMtk $PROJECT new kernel
set +x
#./makeMtk $PROJECT remake kernel
#echo ./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
#./mediatek/build/tools/images/mkbootimg --kernel ./out/Download/flash/kernel_$PROJECT.bin --ramdisk ./out/target/product/$PROJECT/ramdisk.img -o ./out/target/product/$PROJECT/boot.img
输出结果如下
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ ./wmkkernel
++ '[' '' = '' ']'
++ echo 'Use: makeMtk.ini file for the mkkernel project_name'
Use: makeMtk.ini file for the mkkernel project_name
++ sed -n 1p makeMtk.ini
++ read LINE
++ awk '{print $3}'
++ PROJECT=mid713l_lp_lvds
++ echo mid713l_lp_lvds
mid713l_lp_lvds
++ break
++ echo
++ echo ./makeMtk new kernel
./makeMtk new kernel
++ set +x
weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ vim wmkkernel