打印

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

[复制链接]
106|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
卡拉瓦乔|  楼主 | 2018-10-5 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好不容易有时间学习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,否则它不会改变源文件的内容,只会把改变后的内容在终端中显示

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

438

帖子

0

粉丝