的事情是,當我爲我的項目寫一個Makefile,當我需要檢測當前分支的名字,在我做這個規則來實現:
check_branch:
if [ "$(git rev-parse --abbrev-ref HEAD)" == "master" ]; then \
echo "In master"
else \
echo "Not in master"; \
fi
當我調用make check_branch時,「$(git rev-parse --abbrev-ref HEAD)」沒有工作,它返回「」空字符串。 但是,當我改變$()到``,它完美的工作。
check_branch:
if [ "`git rev-parse --abbrev-ref HEAD`" == "master" ]; then \
echo "In master"
else \
echo "Not in master"; \
fi
爲什麼$()不能正常工作,而是「做了什麼?只適用於「git」命令。
請注意,在我的Makefile中,我通常在很多規則中使用$()。
謝謝:)
請參閱:[在一個Makefile中轉義](http://stackoverflow.com/questions/2382764/escaping-in-makefile)。問題在於'''(美元符號)對'make'特別。如果你使用雙美元,它應該工作。 –
你還應該注意確保你在'git'層次結構的目錄中。 –
@artlessnoise:你說得對,非常感謝。 :) – hanhp