bash退出代码超出范围

时间:2015-09-03 04:53:31

标签: bash exit

我对这些Bash退出代码感到有点困惑。 例如:

#(444出口) 然后当我使用echo命令显示退出代码时:

#echo $?    这将导致它:188

它似乎是444-256的结果。我知道退出代码的范围是0-255。所以它们总计算为256个退出代码。

但是当我使用时:

(exit 555)

发生什么计算?这将返回43作为退出代码。

1 个答案:

答案 0 :(得分:2)

您遇到了8位整数溢出的影响。在255之后(所有8位设置)变为0(没有设置位)。

所以你看到的计算是“退出代码模256”。

从Bash手册中强调我的:

  

退出状态

     

执行命令的退出状态是waitpid系统调用或等效函数返回的值。 退出状态介于0到255之间,但如下所述,shell可能会使用高于125的值。 shell builtins和复合命令的退出状态也仅限于此范围。 在某些情况下,shell将使用特殊值来指示特定的故障模式

一旦信号发挥作用,最后一部分变得很重要,这可能会中断一个过程并提供退出代码......

  

...如果命令被信号n ...

终止,则为128 + n

...但是这是shell工作,而不是exit命令(不允许这些值)。