makefile之嵌套shell命令
来源:互联网 发布:linux登录oracle数据库 编辑:程序博客网 时间:2024/04/28 10:28
参考:http://blog.csdn.net/yusiguyuan/article/details/16951413
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙。下面总结了一些。
1:尽在Makefile文件的目标项冒号后的另起一行的代码才是shell代码。
eg:
xx = xx1 // 这里时makefile代码
yy:xx = xx2 // 这是是makefile代码,makefile允许变量赋值时,'='号两边留空格
yy:
xx=xx3 // 只有这里是shell代码 ,shell不允许‘=’号两边有空格哦。
有一个例外:
xx=$(shell 这里的代码也是shell代码)
2.
在makefile中只能在target中调用shell脚本,如果命令放在了target之前,脚本执行后会报错。所有命令必须放在target之后,并且用tab键起行。
比如:
rm -rf ...
all:
...
makefile: *** commands commence before first target。 停止。
正确如下:
eg:
var=foo
all:
@echo $(var)
3.
Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递。如果你要让上一条命令的结果应用到下一条命令时,应该使用分号分隔这两条命令。比如第一条命令是cd,第二条命令在第一条的基础上运行,需要把两个命令写在一行并用;分隔。
错误实例:
all:
cd /home/joan/
pwd
结果:pwd并没有打印joan目录下的路径,而是脚本所在目录的。正确写法:
all:
cd /home/joan/;pwd
4、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。如果你需要调用shell中的变量(或者正则表达式中锚定句位$),都需要加两个$符号($$)。实例如下:
PATH="/data/"all:echo ${PATH}echo $$PATH
打印结果:
echo "/data/"
/data/
echo $PATH
"/data/"
对于第4点的说法表示怀疑。两个$$在一起表示一个真实的“$”,第二个echo输出echo $PATH 由于 $PATH为"/data/"故打印"/data/"
- makefile之嵌套shell命令
- 一步一步写Makefile(3):伪目标,静态规则,shell命令和去回显,嵌套执行Makefile
- makefile中使用shell 命令
- shell 脚本之变量嵌套
- Makefile之书写命令()
- Makefile之书写命令
- makefile之显示命令
- Linux之Makefile(shell)
- shell脚本嵌套执行expect命令
- shell中嵌套执行expect命令实例
- android makefile 文件中使用shell命令
- makefile 获取shell命令的结果
- MAKEFILE中的shell命令的一些规则
- makefile详解 嵌套执行make,定义命令包 十六
- makefile详解 嵌套执行make,定义命令包
- Makefile学习之书写命令
- Makefile (三)之 命令书写
- Makefile之cc编译命令
- 【SQL Sever】 存储过程的创建和执行
- AJAX DOM添加删除元素
- NSProxy 详解
- Windows7安装JDK的环境变量设置javac不是内部命令或外部命令
- java中的工厂模式
- makefile之嵌套shell命令
- C语言基本数据类型简介
- 知名黑客论坛Nulled.io被黑 9.45GB数据遭泄露
- C#使用SevenZipSharp库时如何去掉压缩文件中的目录文件夹
- 读书笔记--《大话重构》
- android开发图片与屏幕的关系
- javascript获取某个月份(js每月天数,当月天数)的天数
- HTTP系列(六):报文实体和编码
- Leangoo Talk第一期——Scrum与OKR融合实践