问题是当我为我的项目编写 Makefile 时,当我需要检测当前分支名称时,在 make 规则中我这样做了:
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 中,我通常在许多规则中使用$() 。
谢谢 :)