全部,
我发现同样的 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,不提供键盘[[
。