超时命令后避免错误调用

时间:2016-06-26 16:23:16

标签: bash shell makefile

我正在创建一个简单的Makefile,我在其中运行一个超时命令,在一段时间后中断实际命令。

timeout --preserve-status delay <command>
<next command>

但是,在执行Makefile时,它会在中断命令后抛出错误,而不是继续执行下一个命令。我正在使用

--preserve-status 

为了避免错误,但不幸的是,这不起作用。 有没有人知道如何解决这个问题(也许类似于try-catch功能,我能够捕获错误)? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

timeout命令在完成时将以命令状态退出。如果命令因超时命令导致命令退出,则返回状态可能会反映此情况(并且为非零)。因此,如果您预计会发生超时,那么您需要处理返回。您可以通过两种方式执行此操作:首先,您可以使用配方前面的-,如gniorf_gniourf所述,或者您可以在配方末尾添加|| true或等效物,将使配方始终返回成功:

foo:
    timeout --preserve-status delay <command> || echo "timed out"