什么是退出$?在 shell 脚本中?

什么是退出$?在 shell 脚本中?

在shell脚本中,这个命令是什么?exit $?

我没有找到任何资源来解释它。

答案1

其目的通常是以与上一个命令(其是 shell 的表示)exit $?相同的退出状态退出 shell 。$?但它有几个问题:

  • 周围省略了引号$?,这意味着它将受到 split+glob 的影响,因此如果$?包含 的字符将无法正常工作$IFS
  • 如果$?是负数,就像 一样-12,如果前一个命令是函数或某些 shell 中的内置命令,则可能会被解释为exit无法识别的选项并给出错误。exit -- "$?"可以避免它,但--并非所有 shell 都支持。

如果我们单独使用,上面的两个问题就可以避免,exit因为恰好exit没有给出任何参数时的默认行为是以最后一个命令的退出状态退出。

您会发现,当上一个命令失败时退出脚本(并以与该命令相同的失败退出状态退出)的常见习惯用法是:

that-command || exit

当前一个命令因信号而终止或前一个命令的返回码超出 0 到 127 范围时,需要进一步考虑,其中大部分描述如下:进程终止时的默认退出代码?

相关内容