gpt4 book ai didi

git - Makefile $(command) 不工作但 `command` 工作

转载 作者:太空狗 更新时间:2023-10-29 12:57:32 27 4
gpt4 key购买 nike

问题是当我为我的项目编写 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 中,我在许多规则中通常使用 $()

谢谢:)

最佳答案

在食谱中,您必须转义美元符号才能让 shell 解释它们。否则,Make 将 $(git ...) 视为内置命令或变量并尝试对其求值(当然,不成功)。

check_branch:    if [ "$$(git rev-parse --abbrev-ref HEAD)" == "master" ]; then \    ...

关于git - Makefile $(command) 不工作但 `command` 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com