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