的事情是,当我为我的项目写一个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