問題は、私が自分のプロジェクトの 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 では、通常多くのルールで$()を使用していたことに注意してください。
ありがとう :)