我有一個Makefile,它運行一個程序,它在成功時返回一個非零值,並在失敗時返回另一個非零值。我知道我可以通過在命令前加上 - 來忽略退出狀態,但這不起作用,因爲我需要知道命令是否成功。如何檢查Makefile shell調用的退出狀態?
回答
您可以在同一的Makefile線的第二命令來測試返回值,使用shell變量$?
包含最後返回的值。
例如與false
命令顯然會停止編譯:
test:
/bin/false ; /usr/bin/test "$$?" -eq 1 # <-- make does not stop here
/bin/echo "Continues ..."
/bin/false # <-- make stops here
根據工具的行爲方式失敗,您可以檢查輸出文件的存在。是這樣的:
@if test ! -f $(FILE); then exit 2; fi
使用
command || [ $$? -eq v ]
爲你的命令,替換命令與命令,並v與成功返回值。
(這僅僅是迪迪埃Trosset的回答更緊湊的版本)。
這不會像makefile那樣工作,因爲'$?'將根據make變量定義進行解釋。您需要使用'$$?'代替。 – 2011-04-28 17:14:13
固定;感謝您的更正。 – reinierpost 2011-04-29 08:47:23
與Didier Trosset的答案相比,當命令返回狀態爲0(在我的情況下,這不是我想要的)時,它也會通過! – 2011-06-24 09:58:57
- 1. 如何檢查Makefile cmd.exe調用的退出狀態?
- 2. 檢查退出狀態退出狀態
- 3. MYSQL:如何檢查退出狀態?
- 4. 檢查DIFF退出狀態在腳本
- 5. Bash循環和退出狀態檢查
- 6. Bash - 如何使用if語句檢查退出狀態
- 7. 如何通過Makefile中的shell'if'命令傳播退出狀態?
- 8. 如何在makefile中獲取bash命令的退出狀態?
- 9. shell腳本ssh命令退出狀態
- 10. 如何測試退出狀態,並做一些Makefile中
- 11. 如何忽略perl腳本中shell命令的退出狀態
- 12. 如何在Java中捕獲shell命令的退出狀態?
- 13. 退出程序的狀態
- 14. 如何使用shell命令控制/檢查gpio狀態(at91sam9260板)
- 15. docker-machine:預創建檢查時出錯:「退出狀態126」
- 16. 'ls`退出狀態
- 17. bash腳本調用使和退出狀態代碼
- 18. shell腳本來檢查sybase iq狀態
- 19. 不正確的使用退出狀態
- 20. 基於bash shell腳本中命令的退出狀態的回調?
- 21. 檢查Windows上子進程的退出狀態
- 22. Bash:檢查多管道命令鏈的退出狀態
- 23. 在bash中檢查ssh remote命令的退出狀態
- 24. 檢查ipython中最後命令的退出狀態
- 25. Makefile中的Shell腳本條件檢查
- 26. 在C++中捕獲shell腳本退出狀態
- 27. 傳遞迴shell腳本的AppleScript Runner退出狀態
- 28. 如何正確退出UML狀態圖中的嵌套狀態?
- 29. 如何檢查外部shell腳本退出代碼
- 30. 從Bash調用的Expect腳本的退出狀態代碼
的第一步是提交錯誤報告到成功返回非零程序的維護者。 – 2011-04-28 11:13:03
那麼,這個程序來自一個商業供應商,所以我懷疑他們會改變程序的行爲。 – trondd 2011-04-30 05:14:35
@trondd GNU make由GNU項目開發,它不是商業的。情況正好相反:它是免費軟件。 – no92 2014-02-13 18:41:07