相关疑难解决方法(0)

基于进程退出代码退出Shell脚本

我有一个执行许多命令的shell脚本.如果任何命令以非零退出代码退出,如何使shell脚本退出?

bash shell

372
推荐指数
8
解决办法
41万
查看次数

如何获取GNU Makefile中使用的shell命令的退出状态?

我在执行linux工具时有一个makefile规则.我需要检查工具命令的退出状态,如果该命令失败,则必须中止make.

我试过用$ ?, $$来检查?\ $?makefile中的etc等.但是当makefile运行时,它们会给我语法错误.

这样做的正确方法是什么?

这是Makefile中的相关规则

    mycommand \
    if [ $$? -ne 0 ]; \
    then \
        echo "mycommand failed"; \
        false; \
    fi
Run Code Online (Sandbox Code Playgroud)

linux shell makefile gnu-make

27
推荐指数
2
解决办法
3万
查看次数

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

我有一个Makefile,它在应用构建规则之前运行工具开始(这个工具为我写的).如果这个工具是一个python脚本,以非空状态代码退出,我希望GNU Make在那里停止,而不是继续构建程序.

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

$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk
Run Code Online (Sandbox Code Playgroud)

但是如果collect_sources.py退出时状态代码为1,则不会停止make .这也会捕获标准输出collect_sources.py但不打印出来,所以我感觉我看错了方向.

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

有什么建议吗?

shell makefile

20
推荐指数
3
解决办法
6505
查看次数

什么是"$$?" 在这个makefile片段中意味着什么?

什么是"$$?" 在下面的Makefile片段中是什么意思?

$(PROGS): FORCE
    @cd $(BUILD_DIRECTORY_PATH)/$@; \
    mkdir -p obj; \
    $(MAKE) || exit "$$?"; \  <====== HERE
Run Code Online (Sandbox Code Playgroud)

添加1

我想这意味着exit "$?"在bash中,因为$$在makefile中转义为$.

但那 exit "$?"意味着什么呢?

bash makefile

1
推荐指数
1
解决办法
1874
查看次数

标签 统计

makefile ×3

shell ×3

bash ×2

gnu-make ×1

linux ×1