exit-shell退出狀態

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 0255 之間的數字表示,這樣實現腳本主動控制返回值。xml

 

POSIX規定的幾種退出狀態進程

退出狀態內存

 

0ci

運行成功

1125

各類運行失敗

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則會直接退出進程。

相關文章
相關標籤/搜索