Bash
執行一系列類似任務時如何確定程序是否成功?
我正在編寫一系列共享相同父命令的 CLI 工具,類似於
git
.program verb OPTIONS
其中一個動作動詞 ,
install
被設計為git clone
與指定的 URL 一樣多的儲存庫。確定程序成功或失敗的穩健且類似於 UNIX 的邏輯方法是什麼?
- 好的 URL > 0 → EXIT_SUCCESS
- 錯誤的 URL == 0 → EXIT_SUCCESS
- 將有效 URL 的數量寫入標準輸出,然後 (1) 或 (2)
- 返回有效 URL 的數量。
- 其他?
您的程序至少應該在成功時退出(3)
EXIT_SUCCESS
(即 0),並且EXIT_FAILURE
在失敗時可能(即 1)。您可以複製(或受其啟發)FreeBSD sysexits.h以獲得更多失敗程式碼(但我不確定是否值得付出努力)。對於任何類型的故障,不要忘記向stderr(或通過syslog(3) )提供一些消息。根據您的描述,
git clone
即使您的子命令沒有一個(在許多)儲存庫中install
也應該是失敗的。使用者可能會做一些更正操作(例如更正錯誤 URL 的拼寫),然後重複相同的命令,因此您可能希望它是冪等的。
不要忘記一個
--help
選項,並記錄 0 和 1 之外的任何退出程式碼。