【问题标题】:Makefile Argument string comparisionMakefile 参数字符串比较
【发布时间】:2019-03-11 06:35:29
【问题描述】:

我正在向 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 mode=d ...?
  • make mode=d install

标签: bash makefile


【解决方案1】:

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

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

【讨论】:

  • 我在`@echo mode is development` 行中得到了错误*** missing separator. Stop.
  • 使食谱以制表符开头。不是空格。不要只是复制粘贴代码。编辑它并用一个制表符替换前导空格。
  • 谢谢。这是我的输入命令。 make mode=d install。我的输出如下,mode is d mode is development 但对于输入sudo make mode=p install,它还运行 else 语句。我的输出是,mode is p mode is development
  • 我的错:我复制粘贴了你的代码,只是稍微修改了一下。我应该更加小心:删除"p" 周围的"。使字符串不是" 分隔的。所以" 字符是字符串的一部分,p"p" 之间的比较失败。相应地编辑了我的答案。
  • 我从你那里学到了一些新东西。有时做错可能有助于其他人学会不做。 :) 它工作正常。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2013-11-12
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多