退出狀態碼可以用來判斷最後一條命令是否執行成功。可以使用特殊變量$?來引用它。通常$?的值爲0表示執行成功,否則執行失敗。退出狀態碼是一個介於0到255之間的整數值。當命令完成時,命令就會把退出狀態傳遞給shell。我們可以捕捉這個值並在腳本中使用它。
常見的退出狀態及其簡單描述如下:
退出狀態 描述 0 成功執行 1 通常的未知錯誤 2 誤用shell命令 126 命令無法執行 執行者沒有權限執行 127 沒有找到命令或無效的命令 128+x 使用Linux信號x的致命錯誤 130 使用Ctrl+c終止的命令 155 規範外的退出狀態 如果爲命令提供一個無效的參數,那麼返回的退出狀態碼爲1 實例1: #!/bin/bash # var1=10 var2=30 var3=$[$var1 + $var2] echo The answer is $var3 exit 5 //指定退出狀態碼 執行結果: [root@localhost ~]# chmod +x 18.sh [root@localhost ~]# ./18.sh The answer is 40 [root@localhost ~]# echo $? 5 實例2: #!/bin/bash # var1=10 var2=30 var3=$[$var1 + var2] echo The answer is $var3 exit $var3 //指定一個變量爲退出狀態碼 執行結果: [root@localhost ~]# chmod +x 19.sh [root@localhost ~]# ./19.sh The answer is 40 [root@localhost ~]# echo $? 40 現在思考一個問題:如果退出狀態碼大於255,那它會怎麼顯示呢?我們來看下面的例子: #!/bin/bash # var1=10 var2=30 var3=$[$var1 * var2] echo The answer is $var3 exit $var3 執行結果: [root@localhost ~]# chmod +x 20.sh [root@localhost ~]# ./20.sh The answer is 300 [root@localhost ~]# echo $? 44 總結:如果指定的退出狀態碼大於255,那麼就用這個數除以256取餘。就把這個餘數作爲退出狀態碼。 [root@localhost ~]# expr 300 % 256 44