用 exit 结束 bash 脚本有什么好处
are there any benefits of ending a bash script with exit
我遇到了一个以 exit
行结尾的 bash 脚本。会有什么变化吗(省去吓唬 'source' 而不是在终端关闭时直接打电话的用户)?
请注意,我对 exit 和 return 之间的区别不是特别感兴趣。在这里,我只对 bash 脚本末尾不带参数的退出之间的区别感兴趣(一个是关闭控制台或进程,它提供脚本而不是调用)。
是否可以解决一些鲜为人知的 shell 方言?
这样做通常没有任何好处。只有缺点,特别是无法像您所说的那样获取脚本源。
您可以构建重要的场景,例如让 source
ing 脚本依赖它来终止错误,或者让 self-extracting 存档 header 避免执行其负载,但这些不寻常的案例不应成为一般指南的基础。
一个重要的优势是它让您可以明确控制 return 代码。
否则,脚本的 return 代码将成为它执行的最后一个命令的 return 代码。这可能表示也可能不表示整个脚本的实际成功或失败。
一个稍微不那么重要的优势是,如果最后一个命令的退出代码 是 重要的,并且您在它后面跟进“exit $?”这告诉稍后出现的维护程序员是的,你确实考虑了程序的退出代码应该是什么,他不应该在不明白原因的情况下胡闹。
相反,当然,我不建议以显式退出调用结束 bash 脚本,除非您的意思是“忽略所有先前的退出代码并使用这个代码”。因为这是其他任何查看您的代码的人都会假设您想要的,如果您只是死记硬背而不是出于某种原因,他们会很生气您浪费了他们的时间试图弄清楚为什么。
我遇到了一个以 exit
行结尾的 bash 脚本。会有什么变化吗(省去吓唬 'source' 而不是在终端关闭时直接打电话的用户)?
请注意,我对 exit 和 return 之间的区别不是特别感兴趣。在这里,我只对 bash 脚本末尾不带参数的退出之间的区别感兴趣(一个是关闭控制台或进程,它提供脚本而不是调用)。
是否可以解决一些鲜为人知的 shell 方言?
这样做通常没有任何好处。只有缺点,特别是无法像您所说的那样获取脚本源。
您可以构建重要的场景,例如让 source
ing 脚本依赖它来终止错误,或者让 self-extracting 存档 header 避免执行其负载,但这些不寻常的案例不应成为一般指南的基础。
一个重要的优势是它让您可以明确控制 return 代码。
否则,脚本的 return 代码将成为它执行的最后一个命令的 return 代码。这可能表示也可能不表示整个脚本的实际成功或失败。
一个稍微不那么重要的优势是,如果最后一个命令的退出代码 是 重要的,并且您在它后面跟进“exit $?”这告诉稍后出现的维护程序员是的,你确实考虑了程序的退出代码应该是什么,他不应该在不明白原因的情况下胡闹。
相反,当然,我不建议以显式退出调用结束 bash 脚本,除非您的意思是“忽略所有先前的退出代码并使用这个代码”。因为这是其他任何查看您的代码的人都会假设您想要的,如果您只是死记硬背而不是出于某种原因,他们会很生气您浪费了他们的时间试图弄清楚为什么。