在这个makefile片段中,"$$?"是什么意思?

5
在下面的Makefile片段中,"$$?"代表什么意思?
$(PROGS): FORCE
    @cd $(BUILD_DIRECTORY_PATH)/$@; \
    mkdir -p obj; \
    $(MAKE) || exit "$$?"; \  <====== HERE

ADD 1

我猜它在bash中的意思是exit "$?",因为在makefile中$$代表$

但是exit "$?"是什么意思呢?


3
使用前一个命令的返回代码退出。如果在谷歌搜索代码时遇到困难,请尝试在SymbolHound上搜索,例如http://symbolhound.com/?q=exit+%24%3F+bash。 - 123
1
@123 非常感谢!Symbolhound 对于程序员来说真是太棒了!我找到了答案! - smwikipedia
2个回答

9

$? 是一个程序退出或完成时的返回代码。因此,在你的代码行中

$(MAKE) || exit "$$?"

它将执行$(MAKE)。如果此程序未正确完成,则其返回代码将与0不同,然后将执行exit "$$?",该命令使当前进程以与$(MAKE)程序相同的返回代码退出到shell,您可以在shell中执行echo $?来显示。


1
换句话说,$$? 是 Makefile 中 $? 的等效表示。在 Make 中,要转义 $?,需要使用 $$?。更多信息请参见:Make 中的 Shell 状态码

虽然你没有问,但我通常建议人们避免使用Make。如果可以选择:

  1. 安装pipx。项目网址:https://pypa.github.io/pipx/
  2. 使用pipx安装invoke(pipx install invoke)。项目网址:https://github.com/pyinvoke/invoke
  3. 使用Python而不是奇怪的Make语法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接