作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


先上代码:(在 macos 上调试通过)

# define a shell function to set debug mode to release mode
# when os is macbook, use gsed as sed
define function_sed_set_release_mod
set -x; \
sedcmd="sed"; \
if [[ "$$OSTYPE" == "darwin"* ]]; then \
sedcmd="gsed"; \
if [[ ! -f "/opt/homebrew/bin/gsed" ]]; then \
brew install gnu-sed; \
fi; \
fi; \
$$sedcmd -e 's/const\s\+_debug\s*=\s*\(true\|false\)\s*;\?/const _debug = false;/' $1 > $2;
endef # 把 `const _debug = true;` 修改为 ``const _debug = false;`` release.js: debug.js
@$(call function_sed_set_release_mod, debug.js, release.js )

执行:make release.js 便可以实现用 sed 替换

【代码片段】makefile 中通过 shell 函数执行 sed的更多相关文章

  1. makefile中的shell语法

    在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...

  2. makefile中的shell编程注意点

    参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是 ...

  3. Makefile中支持的函数大全

    一.描述 Makefile的函数调用,很像变量的使用,也是以"$"来标识的,其语法如下: $(<function> <arguments> ) 或是 ${& ...

  4. [转] Makefile中调用Shell

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

  5. 180114 用装饰器实现在不改变函数调用者的代码基础上,实现在函数执行前后分别打印"before" 和 "after"

    def bef_aft(func): #定义一个名为bef_aft的函数名 ,()里的是函数的参数,设置为func, 函数的参数分为实参和形参,有个参数传递的概念 ,下面有很多的解释 def PRin ...

  6. 代码片段--Makefile之大型工程项目子目录Makefile的一种通用写法

    转载:http://blog.csdn.net/mo_hui123456/article/details/8929615 管理Linux环境下的C/C++大型项目,如果有一个智能的Build Syst ...

  7. libcurl 中使用curl_multi_perform()函数执行订阅类型url的问题

    前提概要 当需要同时处理多个url时,可采用curl_multi_perform方式执行,如下代码1: //初始化一个multi curl 对象 CURLM * curl_m = curl_multi ...

  8. Jquery Mobile中pageinit等函数执行两次的问题【终极解决】

    当禁用了jqueryMobile的ajax后,初始化函数如pageinit和pageshow等函数,都会执行两次.document.ready函数也会执行两次. 当然我们可以用一个变量记录是否已经执行 ...

  9. awk中引用shell变量执行替换的脚本

    遇到问题: 现在有两个脚本,我想 将file1中的内容按file2来匹配 [root@154 home]# cat file1 3-1-1 POTV=1,POTA=0,POTP=2 1-4-76 PO ...

  10. plv8 中使用 eval 函数执行表达式计算

    在js 开发中我们都说eval 函数是邪恶的,但是此函数也有好多妙用,以下是几个简单的案例 eval 执行基于js 的表达式计算 比如我们有以下表 CREATE TABLE rules (    id ...

随机推荐

  1. web messaging与Woker分类:漫谈postMessage跨线程跨页面通信

    web messaging 跨文档通信(cross-document messaging):跨就是我们国内更为熟知的HTML5 window.postMessage()应用的那种通信: 通道通信(ch ...

  2. 使用 cron4j-solon-plugin 开发定时任务(新)

    (一)新建一个 maven 空项目 (二)添加 maven 引用 <dependency> <groupId>org.noear</groupId> <art ...

  3. 🤗 Datasets 使用小贴士: 探索解决数据集无法下载的问题

    Hugging Face Hub 是强大的机器学习的数据源.相信大家在国内用 Hugging Face Datasets 都遇到过下载的问题.譬如: import datasets dataset = ...

  4. 【Docker】基础原理

    基础原理 基础流程 Docker镜像讲解 Docker容器讲解 创建容器的两种方式 容器创建命令详解

  5. XShell、XFtp免费许可证增强:删除标签限制!

    大家好,我是DD! XShell相信大家都不陌生了,作为Windows平台下最强大的SSH工具,是大部分开发者的必备工具.但由于免费许可证的标签限制,有不少开发者会去找破解版使用.虽然功能是可以使用了 ...

  6. L2-024 部落 (25 point(s)) (并查集)

    补题链接:Here 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查 ...

  7. 大数据(4)---HDFS工作机制简述

    一.name node管理元数据 元数据:hdfs的目录结构以及文件文件的块信息(块副本数量,存放位置等). Namenode把元数据存在内存中,以方便改动,同时也会在某个时间点上面将其写到磁盘上(f ...

  8. v-html会导致xss攻击

  9. Dubbo入门1:Spirngboot+Dubbo2.6.0整合

    整合springboot+dubbo2.6.0 demo 本文简要说明了springboot和dubbo整合的配置文件的写法 目录结构 整体目录 如下图所示:整体项目是一个父子工程,common作为一 ...

  10. Tomcat 与 JVM 中classpath的理解和设置总结

    本文为博主原创,转载请注明出处: 1.介绍 classpath是java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径.类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的 ...