gpt4 book ai didi

shell - 如何使失败的 $(shell) 命令中断

转载 作者:行者123 更新时间:2023-12-03 11:58:42 26 4
gpt4 key购买 nike

我有一个 Makefile,它首先运行一个工具,然后再应用构建规则(这个工具为我编写的)。如果这个工具(它是一个 Python 脚本)以非空状态代码退出,我希望 GNU Make 就停在那里,而不是继续构建程序。

目前,我做这样的事情(顶级,即第 1 列):

$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk

但这不会停止 make if collect_sources.py以状态码 1 退出。这也捕获了 collect_sources.py 的标准输出但没有打印出来,所以我觉得我看错了方向。

如果可能的话,当一个简单的 MS-DOS shell 是标准系统 shell 时,该解决方案甚至应该可以工作。

有什么建议吗?

最佳答案

可能有更好的方法,但我尝试了以下方法并且有效:

$(if $(shell if your_command; then echo ok; fi), , $(error your_command failed))

在这里我确实假设 your_command不提供任何输出,但解决这种情况应该不难。

编辑:为了让它与默认的 Windows shell(可能还有任何像样的 shell)一起工作,你可以写 your_command && echo ok而不是 ifshell功能。我认为这对于(较旧的)DOS shell 是不可能的。对于这些你可能想要适应 your_command或者编写一个包装脚本来打印错误(或成功)的内容。

关于shell - 如何使失败的 $(shell) 命令中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/225542/

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