すべて、
同じMakefileがMac OS Xでうまく機能するが、Ubuntuでは機能しないことがわかりました。スニペットは次のとおりです。
start:
@echo $(seperator)
@if [[ "$(PROJECT)" == "" ]]; then \
echo " Project powered by CodeMate!"; \
else \
echo " $(PROJECT)"; \
fi
@echo $(seperator)
およびmake文句を言う:
/bin/sh: [[: not found
何か案が?
乾杯、
李
更新:
上記の条件付きBashステートメントを次のように変更しました。
if test "$(PROJECT)" = ""; then \
その後、問題なく動作します。それでは、「[[」の何が問題になっていますか?
Makefileはデフォルトでsh
ではなくbash
を使用します。
Ubuntuでは、sh
はdash
をポイントします。これは、POSIX準拠の最小限のシェルであり、[[
キーワークを提供しません。
これをMakefile
の一番上に配置します:
Shell := /bin/bash # Use bash syntax
これは、[[
がbash
の組み込みコマンドであり、sh
で実行しているために発生します。上記の行は、bash
をmakefileで実行されたコマンドのデフォルトのインタープリターとして設定します。