本系列文章均翻译自Autoconf官方文档:Autoconf Manual,github同步项目:question

M4sh,称作mash,目的是产生便携式可移植 Bourne shell 脚本。因为不同的shell的语法不兼容,故创造此种宏来解决。

其宏以AS_开头。在shell和环境变量中保留了变量命名空间as_,输出文件中是_AS[A-Z]

9.1 普通的shell结构

AS_IF (test1, [run-if-true1], …, [run-if-false])

如果没有一个测试是成功的,执行run-if-false

AS_IF([test "x$foo" = xyes], [HANDLE_FOO([yes])],[test "x$foo" != xno], [HANDLE_FOO([maybe])],[echo foo not specified])

AS_TR_CPP (expression)

expression转为C的宏定义

# This outputs "#define HAVE_CHAR_P 1".# Notice the m4 quoting around #, to prevent an m4 commenttype="char *"echo "[#]define AS_TR_CPP([HAVE_$type]) 1"

9.2 间接变量名的支持

AS_LITERAL_IF (expression, [if-literal], [if-not], [if-simple-ref = ‘if-not’])

AS_LITERAL_WORD_IF (expression, [if-literal], [if-not], [if-simple-ref = ‘if-not’])

expression定义为shell文本,输出if-literal;若expression包含了shell引用或者调用(例如$var或cd),输出if-not

expression为文本的时候,AS_LITERAL_WORD_IF不允许expression含有空格,但是AS_LITERAL_IF可以。

AS_VAR_APPEND (var, text)

相当于var += text,即var=${var}text

AS_VAR_IF (var, [word], [if-equal], [if-not-equal])

输出shell的条件语句。var==word,执行if-equal;否则执行if-not-equal
word必须是单个shell单词。

9.使用M4sh编程相关推荐

  1. C++核心编程(一)

    C++ 核心编程 本系类列博客都是根据黑马的C++视频做的笔记. 本阶段主要针对C++面向对象编程技术做详细记录,探讨C++中的核心和精髓. 1.内存分区模型 C++程序在执行时,将内存大方向划分为4 ...

  2. 【Spring】面向切面编程AOP

    AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  3. python编程问题--第二次

    本质上grp 是一个dataframe 后面接一个[] 得到 series 两个[] 得到dataframe Groupby 如果后面放as_index=False 后面就能连续添加了 不加的话  同 ...

  4. OpenCL编程详细解析与实例

    OpenCL编程详细解析与实例 C语言与OpenCL的编程示例比较 参考链接: https://www.zhihu.com/people/wujianming_110117/posts 先以图像旋转的 ...

  5. C语言与OpenCL的编程示例比较

    C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...

  6. LLVM一些编程语法语义特性

    LLVM一些编程语法语义特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输入程序的一个翻译单元.每个模块由函数.全 ...

  7. Structured Streaming编程 Programming Guide

    Structured Streaming编程 Programming Guide • Overview • Quick Example • Programming Model o Basic Conc ...

  8. TensorFlow编程结构

    TensorFlow编程结构 TensorFlow 与其他编程语言非常不同. 首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行.起初这对于传统程序员来说看起来很 ...

  9. MindSpore API编程概述

    MindSpore API编程概述 总体架构 MindSpore是一个全场景深度学习框架,旨在实现易开发.高效执行.全场景覆盖三大目标,其中易开发表现为API友好.调试难度低,高效执行包括计算效率.数 ...

最新文章

  1. MFC CListCtrl 取消选中
  2. 工业以太网交换机可以家用吗?
  3. 架构师要了解那些??
  4. matlab vision hdl,MATLAB下载,MATLAB购买,MATLAB试用,MATLAB介绍,MATLAB评价
  5. linux 运维 经常逛的几个官网文档
  6. 计算机全息图的制作与在线,基于Matlab的计算全息图的制作与数字再现的研究精选.doc...
  7. cad2022新功能介绍(autocad2022简体中文版)
  8. Deeping Learning for self-driving cars
  9. 【渝粤题库】陕西师范大学200091 东方文学专题研究 作业
  10. Git操作之Untracked Files Prevent Checkout
  11. 【问题解决】seckill-秒杀项目 -- 服务端异常
  12. 手机游戏公司设定的客户群体是大学生和农民工
  13. 读书笔记(宏微观经济学)
  14. 【仅剩12小时】Python科研绘图教程,40+绘图案例(附完整代码)
  15. Tekla structures深入定制开发篇(一)
  16. 我的钱包页面HTML,钱包.html
  17. 小米4c怎么添加语言怎么设置在哪个文件夹,小米4c开发者选项在哪
  18. git 常见问题汇总(更新中)
  19. sql语句转为mysql语句_sql语句转换 sqlserver 转成mysql语句。
  20. CSS Sprites(CSS图片精灵、雪碧图)看这里就够了

热门文章

  1. 高速工业相机应用领域
  2. HCIE 面试资料-OSPF
  3. 如何将pdf在线翻译成英文?
  4. C#textbox和label显示皆透明如何修改/让字体和背景透明
  5. mesothelioma-弥漫性间皮瘤
  6. 人脸识别中的全脸/半脸/中脸
  7. Centos7设置1920x1080分辨率
  8. 上面两点下面一个三角形_【知识点】三角形全等的判定+性质+辅助线技巧都在这里了!...
  9. 数据分析 - 9.MECE法(学习笔记)
  10. open judge1.7.14