1. 程式人生 > >shell指令碼執行返回的狀態碼

shell指令碼執行返回的狀態碼

不管是在執行什麼樣語言編寫的程式,都需要獲得其被呼叫函式或程式的退出狀態或(及)返回值,以便於我們好根據退出狀態或(及)返回值判斷當前被呼叫的函式或程式的執行結果是否成功等,然後好做進一步的處理,如提示使用者出錯了,還是繼續執行等。
這裡先就退出狀態和返回值做一下名詞解釋:
退出狀態:執行某一函式或者程式之後通過變數”#?”獲得的值;
返回值:執行某一函式(或程式)時該函式(或程式)執行過程中所有的輸出。
在執行完有返回值的函式時,該返回值就是當前函式的退出狀態值,在這種情況下,可以認為兩者是相同的。
如下示例:

#!/bin/bashecho "hello"echo $?    #檢視echo "hello"的退出狀態

“$?”只是表示其緊接著的上一行命令的執行結果,它的值是時刻改變的,如果不立即對獲取的返回結果進行處理,可以將”$?”賦值給一個變數,以便後面使用,看以下示例:

#!/bin/bashecho "hello";helloResult=$?;echo "baby";babyResult=$?;echo $helloResultecho $babyResult

退出狀態一般是用來恆量某個函式或程式是否是正常退出。按照約定,返回”0″表示程式正常退出。返回”非0″表示程式非正常退出。被呼叫的函式可以是沒有返回值的,如果是正常的執行完所有的語句,此時也會認為程式是正常完成,退出狀態也會是”0″。
如果被呼叫的函式或程式有使用”return”返回值,那麼”retrun”返回的結果就被認為是程式的退出狀態了,如下示例:

#!/bin/bashfunction hello(){    echo "Hello ";    echo "Baby";    return -1}helloecho $?

輸出如下:

$ ./t4.shHelloBaby255