我遇到了以
exit
行结尾的 bash 脚本。它是否会改变行为(避免吓唬“来源”而不是直接通过关闭终端进行呼叫的用户)?
请注意,我对退出和返回之间的区别不是特别感兴趣。在这里,我只对 bash 脚本末尾不带参数的退出之间的差异感兴趣(一个是关闭控制台或进程,该控制台或进程获取脚本而不是调用)。
可能是为了解决一些不太为人所知的 shell 方言吗?
这样做通常没有任何好处。只有缺点,特别是无法像您所说的那样获取脚本源。
您可以构建重要的场景,例如让
source
ing 脚本依赖它来终止错误,或者让自解压存档头避免执行其有效负载,但这些不寻常的情况不应成为一般准则。
一个显着的优点是它使您可以显式控制返回代码。
否则,脚本的返回代码将是它执行的最后一个命令的返回代码。这可能或可能不表明整个脚本的实际成功或失败。
一个不太重要的优点是,如果最后一个命令的退出代码是重要,并且您可以用“exit $?”来跟进它。这告诉稍后出现的维护程序员,是的,您确实考虑了程序的退出代码应该是什么,并且他不应该在不理解原因的情况下胡乱使用它。
相反,当然,我不建议通过显式调用退出来结束 bash 脚本,除非您真正的意思是“忽略所有先前的退出代码并使用这个”。因为这就是其他人看到你的代码时会假设你想要的,如果你只是死记硬背而不是有原因的话,他们会因为你浪费时间试图找出原因而感到恼火。