退出状态码可以用来判断最后一条命令是否执行成功。可以使用特殊变量$?来引用它。通常$?的值为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