Дело в том, что когда я писал 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 я обычно использовал $() во многих правилах.
Спасибо :)
$
(знак доллара) является особенным дляmake
. Если вы используете двойной доллар, это должно сработать. - person artless noise   schedule 31.03.2013git
. - person artless noise   schedule 31.03.2013