![什么是退出$?在 shell 脚本中?](https://linux22.com/image/173434/%E4%BB%80%E4%B9%88%E6%98%AF%E9%80%80%E5%87%BA%24%EF%BC%9F%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%EF%BC%9F%20.png)
在shell脚本中,这个命令是什么?exit $?
我没有找到任何资源来解释它。
答案1
其目的通常是以与上一个命令(其是 shell 的表示)exit $?
相同的退出状态退出 shell 。$?
但它有几个问题:
- 周围省略了引号
$?
,这意味着它将受到 split+glob 的影响,因此如果$?
包含 的字符将无法正常工作$IFS
。 - 如果
$?
是负数,就像 一样-12
,如果前一个命令是函数或某些 shell 中的内置命令,则可能会被解释为exit
无法识别的选项并给出错误。exit -- "$?"
可以避免它,但--
并非所有 shell 都支持。
如果我们单独使用,上面的两个问题就可以避免,exit
因为恰好exit
没有给出任何参数时的默认行为是以最后一个命令的退出状态退出。
您会发现,当上一个命令失败时退出脚本(并以与该命令相同的失败退出状态退出)的常见习惯用法是:
that-command || exit
当前一个命令因信号而终止或前一个命令的返回码超出 0 到 127 范围时,需要进一步考虑,其中大部分描述如下:进程终止时的默认退出代码?