2016-06-26 48 views
0

我正在創建一個簡單的Makefile,在該Makefile中運行超時命令,該命令會在某段時間後中斷實際的命令。在超時命令後避免錯誤調用

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

但是,執行Makefile時,會在中斷命令而不是繼續執行下一個命令後引發錯誤。我正在使用

--preserve-status 

爲了避免錯誤,但不幸的是,這並沒有完成這項工作。 有沒有人有一個想法如何解決這個問題(也許像try-catch功能,我可以捕獲錯誤)? 在此先感謝!

+2

我不確定你想要做什麼。如果你希望'make'繼續執行,即使這個命令失敗了,[用'-'](http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html#tag_04_84_13_02)加上你的行。 –

回答

0

當完成時,timeout命令將以命令狀態退出。如果由於超時命令而導致命令退出,則返回狀態可能會反映此情況(並且不爲零)。所以,如果你期望可能發生超時,那麼你需要處理回報。您可以通過兩種方法來實現這一點:首先,您可以在配方前面使用-,如gniorf_gniourf所述,或者您可以簡單地在配方末尾附加|| true或等效物,這將導致配方始終返回成功:

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