EDN首页   博客首页

日志档案

发表于 2008-10-12 16:33:31

0

标签: shell  

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

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,否则它不会改变源文件的内容,只会把改变后的内容在终端中显示

系统分类: 嵌入式   |   用户分类: Linux学习   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(93)    回复(0)  

投一票您将和博主都有获奖机会!