1. intruductionshell
exit 使shell(腳本)以指定狀態值退出, 不帶參數執行exit時,shell或腳本以最後執行命令的狀態值退出。 shell退出前, trap會捕獵EXIT信號。0表示執行成功,非0值表執行失敗。它常常用於判斷語句和循環語句來控制程序和表達式的流程。 bash
exit 使得編寫腳本時能夠自行設置退出時的狀態值,使用$?引用,特定的退出狀態值通常也會定義特定的退出含義。也能夠用test來檢查表達式的退出狀態。ide
bash 全部builtin 命令都會在成功時返回狀態0,失敗時返回非0,因此它們能夠用於條件命令和命令list中函數
exit status退出狀態ui
執行某一函數,程序或命令後退出時,向父命令返回一個整數,這個稱爲退出狀態。不帶參數的exit,則退出狀態爲最後被執行命令的退出狀態。父進程能夠中能夠用$?引用其值spa
判斷語句和循環語句也會用到exit status內置命令來控制程序流程,用來返回給父進程一個status值且腳本退出,且返回值保存在$?中, status 用0~255 之間的數字表示,這樣實現腳本主動控制返回值。xml
POSIX規定的幾種退出狀態進程
退出狀態內存 |
|
0ci |
運行成功 |
1~125 |
各類運行失敗 |
126 |
找到命令,但沒法執行 |
127 |
未找到運行的命令 |
>128 |
命令被系統強行結束 |
2. sysopsis
exit [status value]
status value 0~255 值保存在?變量中
3. eg
exit 退出shell,不改變$?的值
exit 1 退出shell, 且返回1
4. 比較return
exit是一個系統調用,用於在程序運行的過程當中隨時結束進程,它會刪除進程佔用的內存空間,並將status是返回給父進程,這個status一般用於標識程序的一些運行信息。
return是語言級別的一個關鍵字,它表示調用堆棧的返回,用於帶一個status從函數退出。return不帶參數時,則會返回函數體中最後一個命令的返回值。
return 也能夠用於. (source) 方式(子shell)執行腳本時的返回,也能夠返回指定的status 或者腳本中最後一個命令的exit status.
return 不用於函數體,也沒有以.(source)方式執行腳本時,則會報錯。
return會觸發trap
因此正確的用法是將return 用於函數的返回,exit用於進程的退出。好比若是主函數調用子函數,在子函數裏使用return會回到主函數中,但在子函數中誤用exit則會直接退出進程。