Bash 中的 Makefile 异常!

Bash 中的 Makefile 异常!

全部,

我发现同样的 Makefile 在 Mac OS X 中运行良好,但在 Ubuntu 中却不行。代码片段如下:

start:
    @echo $(seperator)
    @if [[ "$(PROJECT)" == "" ]]; then \
         echo " Project powered by CodeMate!"; \
     else \
         echo "  $(PROJECT)"; \
     fi
    @echo $(seperator)

制作抱怨:

/bin/sh: [[: not found

任何想法?

干杯,


更新:

我已将上述条件 Bash 语句更改为:

if test "$(PROJECT)" = ""; then \

那么一切正常。那么“[[”有什么问题?

答案1

将其放置在您的顶部Makefile

SHELL := /bin/bash # Use bash syntax

发生这种情况是因为[[是的内置命令bash,而您正在使用 运行它sh。上面的行将设置bash为在 makefile 上运行的命令的默认解释器。

答案2

Makefilesh默认使用,而不是bash

在 Ubuntu 中sh指向dash,一个符合 POSIX 标准的简约 shell,不提供键盘[[

相关内容