原创 写自动编译的脚本所遇问题【原】

2008-10-12 16:33 3686 9 9 分类: MCU/ 嵌入式
2008年10月03日 星期五 19:11



       好不容易有时间学习linux,今天在公司弄个脚本,让它自动对我们的工程文件编译,而不需要我们自己手动去输入命令,特别是宏开关,因为客户之多,宏开关也就多,我们老大国庆前跟我说有时间好好研究下脚本,并给我一个范本,呵呵,今天下午特地跑到公司来研究研究,呵呵,还真碰到一些问题:


1. 如何比较两个字符串相等;举例:


if [ "$test"x = "test"x ]; then


这里的关键有几点:


1 使用单个等号


2 注意到等号两边各有一个空格:这是unix shell的要求


3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected


2. $1...表示什么;举例:


先做一个shell: w2.sh
=======================================
#!/bin/bash

echo $1
echo $2
echo $3
=======================================
在Linux下: chmod +x w2.sh
./w2.sh   hello boobooke   video
执行结果:
hello
boobooke
video
清楚了吧? $1是传递给该shell脚本的第一个参数,$2是传递给该shell脚本的第二个参数,以此类推。


3. 如何打开文件中的宏,举例:


比如我要打开test.h中的宏 #define __TEST__


TestStrings="__TEST__"


PATH="test.h的目录"


sed -ie "s/^\/\/${TestStrings}\s*/${TestStrings}/" $PATH/test.h


关闭test.h中的宏 #define __TEST__


sed -ie "s/^${TestStrings}\s*/\/\/${TestStrings}/" $PATH/test.h


注:必须加上i,否则它不会改变源文件的内容,只会把改变后的内容在终端中显示

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条