首页 > 解决方案 > 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 脚本中比较字符串的一般规则是什么?

标签: bashmakefile

解决方案


您正在使用纯 make 语法 ( ifeq) 作为配方(该行以制表符开头)。试试这个,而不是:

mode = p
install:
    @echo mode is $(mode)
ifeq ($(mode),p)
    @echo mode is production
else
    @echo mode is development
endif

推荐阅读