为什么要使用+;=要存储命令';bash中的退出状态是什么?

为什么要使用+;=要存储命令';bash中的退出状态是什么?,bash,exit-code,Bash,Exit Code,最近,我在Bash脚本中遇到了这种模式: function foo { declare -i status=0 # command(s) (( status += $? )) return $status 为什么有人会使用+=来保存退出状态(而不仅仅是状态=$?)?限制。这意味着您可以针对特定错误返回特定代码,例如: 0-无故障 1-IO异常 2-运行时异常 3-HD头部碰撞 等等 但是,如果您的应用程序由于多种原因崩溃,该怎么办?传达这一点的一种方法是返回一组退出代码,其工作

最近,我在Bash脚本中遇到了这种模式:

function foo {
  declare -i status=0
  # command(s)
  (( status += $? ))
  return $status
为什么有人会使用
+=
来保存退出状态(而不仅仅是
状态=$?
)?

限制。这意味着您可以针对特定错误返回特定代码,例如:

0-无故障
1-IO异常
2-运行时异常
3-HD头部碰撞
等等

但是,如果您的应用程序由于多种原因崩溃,该怎么办?传达这一点的一种方法是返回一组退出代码,其工作方式有点类似:

0-无故障
1-IO异常
2-运行时异常
4-HD头部碰撞

现在,如果你能对异常进行求和,那么求和会告诉你哪里出了问题:

3=1+2=IO异常+运行时异常
5=1+4=IO异常+HD头部崩溃
6=2+4=运行时异常+HD头部崩溃
7=1+2+4=IO异常+运行时异常+硬盘崩溃

这可能是它们返回一组退出代码的原因。

限制。这意味着您可以针对特定错误返回特定代码,例如:

0-无故障
1-IO异常
2-运行时异常
3-HD头部碰撞
等等

但是,如果您的应用程序由于多种原因崩溃,该怎么办?传达这一点的一种方法是返回一组退出代码,其工作方式有点类似:

0-无故障
1-IO异常
2-运行时异常
4-HD头部碰撞

现在,如果你能对异常进行求和,那么求和会告诉你哪里出了问题:

3=1+2=IO异常+运行时异常
5=1+4=IO异常+HD头部崩溃
6=2+4=运行时异常+HD头部崩溃
7=1+2+4=IO异常+运行时异常+硬盘崩溃


这可能是他们返回一组退出代码的原因。

这可以推测,但对我来说,作者的意图是将所有退出代码相加,然后返回此sum。这取决于上下文。e、 g.当
status=256
时,
返回$status
返回0
相同。因此,对所有退出代码求和并不总是有意义的。另一方面,如果上下文中的所有命令在某些条件下返回1,否则返回0,则
foo
可以用作计数器。这是可以推测的,但对我来说,作者的意图是将所有退出代码相加,然后返回此sum。这取决于上下文。e、 g.当
status=256
时,
返回$status
返回0
相同。因此,对所有退出代码求和并不总是有意义的。另一方面,如果上下文中的所有命令在某些条件下返回1,否则返回0,则
foo
可以用作计数器。