Linux Shell程式設計(11)——退出和退出狀態

尹成發表於2014-09-30
exit命令一般用於結束一個指令碼,就像C語言的exit一樣。它也能返回一個值給父程式。


每一個命令都能返回一個退出狀態(有時也看做返回狀態).一個命令執行成功返回0,一個執行不成功的命令則返回一個非零值,此值通常可以被解釋成一個對應的錯誤值。除了一些例外的情況,一個行為端莊的UNIX命令,程式或是軟體包執行成功能返回0的作為退出碼。


同樣的,在指令碼里的函式和指令碼自身都會返回一個退出狀態碼。在指令碼或函式裡被執行的最後一個命令將決定退出狀態碼。在一個指令碼里,exit nnn 命令將會返回shell一個nnn的退出狀態碼。(nnn必須是一個在0-255範圍的十進位制整數)。



如果一個指令碼以不帶引數的exit命令結束,指令碼的退出狀態碼將會是執行exit命令前的最後一個命令的退出碼。
#!/bin/bash
COMMAND_1
. . .
# 指令碼將會以最後命令COMMAND_LAST的狀態碼退出。
COMMAND_LAST
exit



指令碼結束沒有exit,不帶引數的exit和exit $?三者是等價的。

#!/bin/bash
COMMAND_1
. . .
# 會以最後命令的退出碼退出指令碼.
COMMAND_LAST
exit $?


  
#!/bin/bash
COMMAND1
. . . 
# 會以最後命令的退出碼退出指令碼.
COMMAND_LAST

$?變數儲存了最後一個命令執行後的退出狀態。當一個函式返回時,$?儲存了函式裡最後一個命令的退出狀態碼。這就是Bash裡函式返回值的處理辦法。當一個指令碼執行結束,$? 變數儲存指令碼的退出狀態,而指令碼的退出狀態則是指令碼中最後一個已執行命令的退出狀態。並且依照慣例,0表示執行成功,1-255的整數範圍表示錯誤。

相關文章