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