在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的。本文试着归纳一下Makefile和shell脚本的不同。
1、 shell中所有引用以$打头的变量其后要加{},而在Makefile中的变量是以$打头的后加()。实例如下:
Makefile
PATH="/data/"
SUBPATH=$(PATH)

Shell
PATH="/data/"
SUBPATH=${PATH}

2、Makefile中所有以$打头的单词都会被解释成Makefile中的变量。如果你需要调用shell中的变量(或者正则表达式中锚定句位$),都需要加两个$符号($$)。实例如下:

PATH="/data/"

all:
    echo ${PATH}
    echo $$PATH例子中的第一个${PATH}引用的是Makefile中的变量,而不是shell中的PATH环境变量,后者引用的事Shell中的PATH环境变量。

3、通配符区别
shell 中通配符*表示所有的字符
Makefile 中通配符%表示所有的字符

4、在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的。比如如下代码就是没有任何输出:

VAR="Hello"
echo "$VAR"

all:
   .....以上代码任何时候都不会输出,没有在target内,如果上述代码改为如下:

VAR="Hello"

all:
    echo "$VAR"
    .....以上代码,在make all的时候将会执行echo命令。

5、在Makefile中执行shell命令,一行创建一个进程来执行。这也是为什么很多Makefile中有很多行的末尾都是“;  \”,以此来保证代码是一行而不是多行,这样Makefile可以在一个进程中执行,例如:

SUBDIR=src example
all:
    @for subdir in $(SUBDIR); \
    do\
        echo "building "; \
    done上述可以看出for循环中每行都是以”; \”结尾的。

Makefile与shell脚本区别相关推荐

  1. Makefile和shell脚本调用上的一些总结

    大家都知道在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的.本文试着介绍一下Makefile和shell脚本的不同. 1.在Makefile中只能在target中 ...

  2. perl、python、shell脚本区别

    个人目前工作主要用到的脚本语言是shell.perl sed和awk一般融入到shell里面应用, bash是shell的一种, 也是linux的默认shell shell是linux内核和用户命令的 ...

  3. 嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

    大家好,是矜辰所致,嵌入式 Linux入 门第五课,本课开始简单学习一下 Shell 脚本编程. 目录 前言 一.Shell 脚本基础说明 1.1 什么是 Shell 脚本 1.2 Shell 脚本的 ...

  4. Makefile文件和shell脚本

    1.在Makefile中只能在target中调用Shell脚本,其他地方是不能输出的.比如如下代码就是没有任何输出: VAR="Hello" echo "$VAR&quo ...

  5. linux shell脚本的执行方式与区别

    linux shell脚本的执行方式与区别

  6. 在c语言中逗号运算符若不带括号,详解shell脚本括号区别--$()、$「 」、$「 」 、$(()) 、「 」 、「[ 」]...

    概述 很多时候我们在写shell脚本的时候总会碰到不同的括号,那么这些不同的括号有什么区别呢? $() 用于命令交换 说明:平时脚本用的``符号也是用于命令交换的哦,和$() 的操作是一样的 ${ } ...

  7. shell脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

    一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章. 一.意思 #!/bin/ ...

  8. shell脚本:exit 0 和 exit 1有什么区别?他们和return不同,return是关键字,exit是一个shell函数

    定义 exit 0 :正常运行程序并退出程序.使用echo $? 返回0,也就是说调用环境认为你的程序执行正常. exit 1 :非正常运行导致退出程序,也可以是其他数字.系统程序对于程序运行错误是有 ...

  9. shell的基本概念 以及shell和shell脚本的区别

    Shell简介 概述 Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令,并把它送入内核去执行.内核是Linux系统的心脏,从开机自检就驻留在计算机的内 ...

最新文章

  1. sql server:alter database name
  2. brew改源无效问题之一
  3. 设计模式原则(单一、开放封闭、里氏代换、依赖倒转、迪米特法则五大原则)...
  4. linux7网卡配置vlan,centos7配置vlan,实现一个网卡两个地址的功能
  5. Spartacus integration library 文件夹的设计
  6. mysql函数大全最小,MySQL函数一览_MySQL函数全部汇总
  7. 基于Spring中的事务管理机制
  8. 命令行BASH的基本操作
  9. E-Prime2.0安装避坑指南
  10. SecureCRT的下载与使用
  11. 专用发票扫描识别SDK
  12. iRedMail在Debian或Ubuntu Linux上的安装
  13. 学习(四):显示FPS,和自定义显示调试
  14. pytho语法总结(1):基础知识,列表介绍,列表操作
  15. 利用网络实现自己的六度人脉
  16. R语言也可以进行ATAC数据的完整分析啦!
  17. 查找python安装路径
  18. linux系统读取plc状态,Linux系统下上位机通讯协议及PLC冗余系统组态-工业支持中心-西门子中国...
  19. 欺骗的艺术----(5)
  20. vmware安装vsp

热门文章

  1. 关于线段树or 树状树状 在二维平面搞事情!Orz
  2. 2018 10 23
  3. 现代软件工程 第3-6章 作业
  4. awk 查看ip连接数(常见应用一)
  5. postgresql生产环境数据库迁移
  6. 提高Eclipse的速度,去掉对于工程的 Validatioan
  7. 自己的 「QA票 CheckList 」 KPT
  8. OxA6可以作为C语言常量吗,淮阴师范学院期末考试c语言题库
  9. 【Oracle】ORA-30042: Cannot offline the undo tablespace
  10. android 学习 解决R.java不能自动生成问题,编译时adb.exe 找不到问题