shell編程之退出狀態碼

    退出狀態碼可以用來判斷最後一條命令是否執行成功。可以使用特殊變量$?來引用它。通常$?的值爲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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章