shell中運行的每個命令都使用退出狀態碼(exit status)。退出狀態碼是一個0~255的整數,在命令結束運行時有命令傳給shell。
查看退出狀態碼
Linux提供了一個專門的變量 $? 來保存上一個已執行命令的退出狀態碼。對於需要進行檢查的命令,必須在其運行完畢後立刻查看或使用 $? 變量。它的值會變成有shell所執行的最後一條命令的退出狀態碼。
一個成功結束的命令的退出狀態碼是0。Linux錯誤退出狀態碼沒有什麼標準可循,但有一些可用的參考:
狀態碼 | 描述 |
---|---|
0 | 命令成功結束 |
1 | 一般性未知錯誤 |
2 | 不適合的shell指令 |
126 | 命令不可執行 |
127 | 沒找到命令 |
128 | 無效的退出參數 |
128+x | 與Linux信號x相關的嚴重錯誤 |
130 | 通過 Ctrl+C 終止的命令 |
255 | 正常範圍之外的退出狀態碼 |
舉例說明:
- 無效的命令會返回一個退出狀態碼127。
- 退出狀態碼126,表明用戶沒有執行命令的正確權限。
- 給命令提供了無效參數,會產生一般性的退出狀態碼1,表明在命令中發生了未知錯誤。
exit 命令
默認情況下,shell腳本會以腳本中的最後一個命令的退出狀態碼退出。
使用exit命令可以改變這種行爲,允許你在腳本結束時指定一個退出狀態碼。
退出狀態碼是一個0~255的整數,參數太大,會被系統取模。