exit 是一個 Shell 內置命令,用來退出當前 Shell 進程,并返回一個退出狀態;使用$?可以接收這個退出狀態,這一點已在《Shell $?》中進行了講解。
exit 命令可以接受一個整數值作為參數,代表退出狀態。如果不指定,默認狀態值是 0。
一般情況下,退出狀態為 0 表示成功,退出狀態為非 0 表示執行失敗(出錯)了。
exit 退出狀態只能是一個介于 0~255 之間的整數,其中只有 0 表示成功,其它值都表示失敗。
Shell 進程執行出錯時,可以根據退出狀態來判斷具體出現了什么錯誤,比如打開一個文件時,我們可以指定 1 表示文件不存在,2 表示文件沒有讀取權限,3 表示文件類型不對。
編寫下面的腳本,并命名為 test.sh:
#!/bin/bash
echo "befor exit"
exit 8
echo "after exit"
運行該腳本:
[mozhiyan@localhost ~]$ bash ./test.sh
befor exit
可以看到,"after exit"并沒有輸出,這說明遇到 exit 命令后,test.sh 執行就結束了。
注意,exit 表示退出當前 Shell 進程,我們必須在新進程中運行 test.sh,否則當前 Shell 會話(終端窗口)會被關閉,我們就無法看到輸出結果了。
所以使用bash命令執行腳本,或者直接執行腳本,退出的是新進程,不會退出當前shell會話。如果使用source命令執行腳本,就會退出當前Shell會話了。
我們可以緊接著使用$?來獲取 test.sh 的退出狀態:
[mozhiyan@localhost ~]$ echo $?
8
參考:
Shell exit命令:退出當前進程 (biancheng.net)