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