exit-shell退出狀態

來源:互聯網
上載者:User

標籤:exit   退出狀態   

1. intruduction

exit 使shell(指令碼)以指定狀態值退出, 不帶參數執行exit時,shell或指令碼以最後執行命令的狀態值退出。 shell退出前, trap會捕獵EXIT訊號。0表示執行成功,非0值表執行失敗。它經常用於判斷語句和迴圈語句來控製程序和運算式的流程。

exit 使得編寫指令碼時可以自行設定退出時的狀態值,使用$?引用,特定的退出狀態值一般也會定義特定的退出含義。也可以用test來檢查運算式的退出狀態。

bash 所有builtin 命令都會在成功時返回狀態0,失敗時返回非0,所以它們可以用於條件命令和命令list中

 

 

exit status退出狀態

執行某一函數,程式或命令後退出時,向父命令返回一個整數,這個稱為退出狀態。不帶參數的exit,則退出狀態為最後被執行命令的退出狀態。父進程可以中可以用$?引用其值

判斷語句和迴圈語句也會用到exit status內建命令來控製程序流程,用來返回給父進程一個status值且指令碼退出,且傳回值儲存在$?中, status 用0~255 之間的數字表示,這樣實現指令碼主動控制傳回值。

 

POSIX規定的幾種退出狀態

退出狀態

 

0

運行成功

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

 

本文出自 “Adelphos” 部落格,請務必保留此出處http://adelphos.blog.51cto.com/2363901/1636235

exit-shell退出狀態

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.