2016-05-19 58 views
0

我想退出shell腳本。這是我在另一個函數調用的函數如何使用函數以正確的方式退出shell腳本

我這樣做:

exit_script() 
{ 
    if [[ $? -eq 0 ]] ; then 
     echo "exit from script with success" 
     exit 
    else 
     echo "exit with error..." 
     exit 
    fi 
} 

這是正確的把「退出」或者我必須「退出」後,把一個退出狀態,如「1號出口」 ?

回答

1

exit不帶參數使用上述命令的退出狀態。對於第一種情況,這沒問題,但在第二種情況下,您應該以非零退出狀態退出(對於非特定錯誤,1可以),而不是從前面的echo獲得的0。

exit_script() 
{ 
    if [[ $? -eq 0 ]] ; then 
     echo "exit from script with success" >&2 
     exit # or exit 0, if you want to be specific 
    else 
     echo "exit with error..." >&2 
     exit 1 
    fi 
} 

你可能想的郵件發到標準錯誤,但如果沒有,只是刪除已添加到每次調用echo>&2

如果您想要以您測試的退出狀態退出,您需要先保存它。

exit_script() 
{ 
    status=$? 
    if [[ $status -eq 0 ]] ; then 
     echo "exit from script with success" 
    else 
     echo "exit with error..." 
    fi >&2 
    # Now you can just make one, all-purpose call to exit 
    exit $status 
} 
0

退出將複製最後一個被調用的命令的退出狀態,除非您提供一個明確的值。在你的情況下,exits將返回成功,因爲echos成功。

0

退出狀態在成功執行時應爲0,如果出現任何錯誤,退出狀態應爲0。

另請注意,當沒有要退出的參數時,腳本的退出狀態是在腳本中執行的最後一個命令(退出之前)的退出狀態。