bash - Makefile 参数字符串比较
问题描述
我正在将一个参数传递给 makefile 目标。我想做参数的字符串比较。这是我的代码,
mode = p
install:
@echo mode is $(mode)
ifeq ($(mode),"p")
@echo mode is production
else
@echo mode is development
endif
我收到以下错误,
mode is d
ifeq (d,"p")
/bin/sh: 1: Syntax error: word unexpected (expecting ")")
什么是错误以及在 bash 脚本中比较字符串的一般规则是什么?
解决方案
您正在使用纯 make 语法 ( ifeq
) 作为配方(该行以制表符开头)。试试这个,而不是:
mode = p
install:
@echo mode is $(mode)
ifeq ($(mode),p)
@echo mode is production
else
@echo mode is development
endif
推荐阅读
- reactjs - 如何在反应虚拟化表的每一行中添加复选框输入?
- javascript - `-->` 是 JavaScript 和 Web 浏览器中有效的单行注释分隔符吗?
- r - 如何从 R 中的远程服务器读取 json 文件?
- ionic-framework - 如何使用角度 ui 路由器/离子框架以编程方式添加先前状态
- r - R中的for循环不绑定文件
- nginx - 我需要 CDN 还是可以直接使用 ngnix 负载均衡器(缓存)
- homebrew - 尝试使用 Brew 卸载 Kibana 时出错
- javascript - 在 reactjs 组件中覆盖或停止 CSS 动画
- docker - Gitlab-ci 多个图像,每个阶段的 before_script 并将依赖项安装到图像
- angular - Angular 9:未从子级调用 EventEmitter.emit 的父函数